On Monday, 1 June 2020 at 19:51:34 UTC, tastyminerals wrote:
[snip]
I see. It depends on how much work is needed for any of the
options, right?
For now, I think having a function that does the job suffices
for me at least. Since I always printed tensors in Python to
see what's going on, I was lacking the same functionality in
Mir.
I don't code in D on a daily basis but still try to learn by
doing small stuff. I think the current implementation is far
from being included into anything without rigorous code review
but would be glad to see better slice formatting in Mir.
Yeah, mir is kind of bare bones for some stuff.
I had meant to include the link before
https://github.com/libmir/numir/pull/10
If you look at some of the unittests you can see how it's
different. I separated out the different tensors with extra lines
between them, which isn't as easy to read. However, I think
bigger than a 3-d tensor is relatively uncommon. It might be some
work to get it to work since all the functions would need to be
re-written to take into account the mir's new format facilities,
but I probably wouldn't have to change the unittests too much.
I just tried to use the mir.format for the first time (code
below). The documentation is a bit lacking at this point. The
`print` function is like `put` function for an output range but
with some additional functionality I don't understand yet. I
think for it to be used completely in a @nogc manner, you would
need a @nogc `writeln` function as well.
/+dub.sdl:
dependency "mir-algorithm" version="*"
+/
import mir.format;
import mir.appender: ScopedBuffer;
import std.stdio: writeln;
void main() {
FormatSpec formatSpec;
formatSpec.format = 'f';
formatSpec.precision = 3;
auto x = withFormat(1.5f, formatSpec);
ScopedBuffer!char w;
w.print(x);
w.data.writeln;
}