Re: mir-algorithm v0.7.0: new interpolation, optmath, bugfixes

2017-12-12 Thread jmh530 via Digitalmars-d-announce

On Tuesday, 12 December 2017 at 23:10:26 UTC, Nathan S. wrote:

About Mir Algorithm

[snip]


+1


mir-algorithm v0.7.0: new interpolation, optmath, bugfixes

2017-12-12 Thread Nathan S. via Digitalmars-d-announce

About Mir Algorithm

Mir Algorithm[1] is Dlang core library for math, finance and a 
home for Dlang multidimensional array package - ndslice.


New Modules since v0.6.21

- Reworked interpolation API, now found in mir.interpolate, 
mir.interpolate.linear, mir.interpolate.pchip.
- New module mir.interpolate.spline for cubic interpolation. 
Warning: multivariate cubic spline with derivatives is still 
experimental.
- New module mir.interpolate.constant for constant interpolation. 
Warning: multivariate constant interpolant is still experimental.



API Changes since v0.6.21

- Added in mir.math.common function attributes @optmath and 
@fmamath. They only have effect when compiling with LDC but can 
be used with all compilers. (This now also applies to @fastmath.) 
@optmath is similar to @fastmath but does not allow 
unsafe-fp-math. Does not force LDC to replace division with 
multiplication by reciprocal.
- New mir.utility.extMul extended unsigned multiplication that 
makes available the high bits of the result

- New mir.functional.aliasCall
- New mir.ndslice.algorithm.maxLength returns max length across 
all dimensions.
- New mir.ndslice.slice.IteratorOf!(T : Slice) extracts iterator 
type from a Slice
- New mir.ndslice.slice.ndassign assignment utility template that 
works both with scalars and with ndslices.
- In mir.ndslice.slice.Slice: iterator is now inout; opUnary now 
works with - and +; opIndexAssign now returns ref this instead of 
void.

- mir.ndslice.field.MagicField supports length and shape.


Removed Modules

- mir.interpolation, mir.interpolation.linear, mir.interpolation. 
Migrate to replacements (mir.interpolate.*).



Other Changes since v0.6.21

- Uses of @fastmath in the Mir codebase have been replaced by 
@optmath, excepting mir.math.sum Summation.fast.
- In mir.ndslice.topology under-the-hood improvements in slide, 
diff, pairwise
- In mir.ndslice.slice.Slice opBinary and opBinaryRight now 
internally use mir.ndslice.topology.vmap instead of 
mir.ndslice.topology.indexed.



Fixed since v0.6.21

- Fix in mir.ndslice.topology.map for compilation failing in 
cases where chained map calls couldn't be coalesced due to 
capturing multiple contexts (seemingly a compiler bug in some 
cases)
- Made mir.ndslice.topology.flattened backwards compatible with 
LDC 1.2.0 for those who haven't upgraded
- Added workaround in mir.ndslice.algorithm.reduce for DMD 
inlining bug for non-Windows x86-64 (LDC unaffected)

- mir.primitives.shape now takes its argument by reference


[1] https://github.com/libmir/mir-algorithm

Release notes with hyperlinks: 
https://github.com/libmir/mir-algorithm/releases/tag/v0.7.0