On Friday, 9 March 2018 at 13:56:33 UTC, Nicholas Wilson wrote:
- I would expect the D `Complex!double` case to work faster
than the `real` one. Why is it the other way around? [I can
accept (and use) D with Complex!real running 1/3 the speed of
C++ (but with increased accuracy), but I'd also love to be
able to run D with `Complex!double` at C++ speeds, since the
tradeoff might be worth it for some calculations]
because the double version is doing the exact same work as the
real
except that it is also converting between real and double for
atan2 (from arg).
https://github.com/dlang/phobos/blob/master/std/math.d#L1352
I'm really not sure why phobos does that, it should't.
Is this a case for a bug report? Seems pretty bizarre to do that,
like an oversight/neglect.
- what is the best way to correct the unfortunate (to be
polite) omission of many standard mathematical functions from
std.complex? [if I may be frank, this is a real pain for us
scientists] There exists
https://gist.github.com/Biotronic/17af645c2c9b7913de1f04980cd22b37 but can this be integrated (after improvements) in the language, or should I (re)build my own?
It will be much faster to build your own that just forward to
the C functions (or LLVM intrinsics) see
https://github.com/libmir/mir-algorithm/blob/master/source/mir/math/common.d#L126 for a starting point (we'd greatly appreciate pull requests for anything missing).
Even if the decision to make std.math behave at the appropriate
precision is accepted, it will still take an entire release
cycle (unless you use dmd master), and I'm not so sure it will.
OK thanks. I looked at libmir, and saw many good things there. I
was wondering: is it still actively developed/maintained? How
will it fit with the "core" D in the future? [I don't want to
build dependencies to libraries which aren't there to stay in the
long run, I want code which can survive for decades]. It would
seem to me that some of the things included in there should be
part of D core/std anyway.
Going further, I'm really wondering what the plan is as far as
Complex is concerned. Right now it just feels neglected
(half-done/aborted transition from creal etc to Complex, lots of
missing basic functions etc), and is one major blocking point as
far as adoption (among scientists) is concerned. Julia is really
taking off with many of my colleagues, mostly because due respect
was given to maths. I'd certainly choose Julia if it wasn't for
the fact that I can't get my exploratory/testing codes to run
faster than about 1/10th of my C++ stuff. It seems D could have
such an appeal in the realm of science, but these little things
are really blocking adoption (including for myself).
[related questions:
Did you press send too soon?
No, the related questions were linked in my previous post (just
copied & pasted it further above, but didn't delete these last
couple of words properly).
Thanks a lot Nicholas!