Release of G'MIC 3.1

On compose, to do ̩⊻, you do ⋄ \ _ / just as one do ⋄ o o for ° symbol. Not too hard, but not convenient as ° symbol as it isn’t accessible on any keyboard to my knowledge.

On a slightly silly note: in some software ** is allowed for exponent (e.g. e**x instead of e^x). I always wished the same was possible for log, such as x//10 and x//e instead of log(x) and ln(x). To me the assumption of fixed base makes logarithms harder to understand.

Note that in G’MIC, ** and // have already the meaning of, respectively, complex multiplication and complex division.

1 Like

Gah, my dreams are smashed again! :pensive:

  • 2022/01/13 : Release of minor version 3.0.1.
1 Like

Bonjour,

Following the thread Library extension G'MIC Prerelease 3.0.1 - #5 by kmilos here is a compilation G’MIC 3.0.1 with a libgmic-301.dll

Works with GIMP-2.99 64bit-Win
GMIC-GIMP-2.99 and GMIC-QT use this DLL.

https://github.com/dtschump/gmic-community/releases/download/gmic-3.0.1-Win/gmic-3.0.1_gimp-2.99_Win64.7z

Speaking of symbols, what G’MIC “needs” is natural language processing. Then you only need to type or speak it to make it so.

1 Like

Symbols is the biggest pros/cons of gmic language at once. Very flexible, but so hard for people to learn.

  • 2022/01/18 : Release of G’MIC 3.0.2 (critical bug fix).

Question, what do people think of allowing negative number in repeat()?

repeat(3,k,print(k);); => 0,1,2 # This works.
repeat(-3,k,print(k);); => 2,1,0 # This wouldn't.

So, repeat with negative number would just be going backward instead of forward.

My opinion is that this would introduce a kind of behavior weirdness :
reducing the value of the first argument of repeat() would first decrease the number of iterations, then increase it (after it becomes negative). And this, for almost no gain, because:

repeat (3,k,l = 2 - k; print(l));

it not that hard to set up.

Too many options can also make debugging difficult.

Above an image size, structuretensors yields different values. E.g.,

gmic sp pencils,1300 +structuretensors structuretensors.. -
1 Like

Confirmed, at a glance it looks like a threading problem.

Fixed with https://github.com/dtschump/CImg/commit/53cf0df323b65a76c7283bc45a61322fe52ac55d
(as structuretensors is a native, it requires a re-compilation though, so will be available in next version 3.0.3).

I noticed structuretensors is no longer core. I wonder how much slower the stdlib version is versus the (fixed) core one. If substantial, I hope it returns to core. This takes 12 s on my laptop:

gmic sp tiger,4000 tic structuretensors toc

I see. When I’ve tested the difference in time was not that big (a few ms), but it was on my office PC that has 24 cores. I think I can optimize it for more standard computers.

Another idea. A new function where you specify the threshold by percentage, and it will cut based on frequency values. The threshold is used for search values starting from each end, and if it frequency is greater than percentage threshold, then cut values is returned as a vector.

Concerning the new “::” syntax of “nm” resp. “name”

Using the new syntax, how is it possible to declare “::” for older versions, something like

if $_version<303 
  :: : name $*
fi

?

It is not possible, that is probably why the next release will be 3.1.0 rather than 3.0.3. I’ll just try keeping the compatibility with the current code.