[vtk-developers] Call for Comments: Ascii representation of floats and doubles in files

Bill Lorensen bill.lorensen at gmail.com
Wed Mar 21 20:10:11 EDT 2018


I'm still working in the MR. It works great but I'm having cmake issues on
Windows. Adding a new third party library is tricky.

On Mar 21, 2018 2:08 PM, "Isaiah Norton" <isaiah.norton at gmail.com> wrote:

> +1. I needed this recently in Slicer, and ended up using ITK's version
> because we link it anyway.
>
>
>> Not sure if we need to add a new third-party library for this, though,
>> especially one that duplicates so much of C++'s built-in machinery.
>>
>
>  Grisu3 (double-conversion) appears to be ~13x faster than the C++ stream
> functions (and 6x faster than sprintf):
>
>   https://github.com/miloyip/dtoa-benchmark
>
> Those numbers are on VS2013/Windows, but that code is easy to build
> locally. The sprintf vs double-conversion conclusion holds on 2015 macbook
> with 10.12 SDK. The C++ stream functionality is somewhat closer to sprintf.
>
> [usual benchmark NaCl disclaimer here]
>
> On Thu, Mar 1, 2018 at 11:32 AM, David Gobbi <david.gobbi at gmail.com>
> wrote:
>
>> I agree that floats should be printed so that conversion is lossless.
>> Python's console output does this and I find it incredibly useful.
>>
>> Not sure if we need to add a new third-party library for this, though,
>> especially one that duplicates so much of C++'s built-in machinery.
>> Isn't it just a matter of printing enough digits?  That's basically what
>> I do in my own code (plus checks for isnan(x) and isinf(x), and a
>> check of the size of fabs(x) for whether to force scientific notation.)
>>
>>  - David
>>
>>
>> On Thu, Mar 1, 2018 at 8:48 AM, Bill Lorensen <bill.lorensen at gmail.com>
>> wrote:
>>
>>> Will,
>>>
>>> It would go in Common/Core I think. The vtk class would be very small.
>>>
>>> Bill
>>>
>>> On Thu, Mar 1, 2018 at 7:36 AM, Will Schroeder
>>> <will.schroeder at kitware.com> wrote:
>>> > If it works why mess with success? Where would this class
>>> > (vtkNumberToString) be placed, in Common/Core (like vtkIndent) or in
>>> some IO
>>> > directory like VTK/IO/Core?
>>> >
>>> > On Thu, Mar 1, 2018 at 10:06 AM, Bill Lorensen <
>>> bill.lorensen at gmail.com>
>>> > wrote:
>>> >>
>>> >> Folks,
>>> >>
>>> >> I'm working on some examples to save/restore camera, polydata,
>>> >> property, etc. in XML files. The files can be saved as binary or
>>> >> ascii. If I save/restore the info in binary, I get the same values for
>>> >> the saved info. But, to no surprise, when I save the same data in
>>> >> ascii, I don't get the same values. This is because the file writing
>>> >> code does not write enough significant digits.
>>> >>
>>> >> In ITK we solved this problem many years ago. ITK uses a reduced
>>> >> version of the Google double-conversion library,
>>> >> https://github.com/google/double-conversion.
>>> >>
>>> >> We added a small class to ITK that uses the library. The class,
>>> >> itkNumberToString, has a simple API. To convert floating and fixed
>>> >> point numbers to ascii without numerical precision erros,
>>> >>
>>> >> For example, to convert a float,
>>> >> #include "itkNumberToString.h:
>>> >> itk::NumberToString<float> convert;
>>> >> float a = 1.0f/3.0f;
>>> >> std::cout << convert(a) << std::endl;
>>> >>
>>> >> I propose a similar approach in VTK.
>>> >>
>>> >> Comments please,
>>> >>
>>> >> Bill
>>>
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Search the list archives at: http://markmail.org/search/?q=vtk-developers
>>
>> Follow this link to subscribe/unsubscribe:
>> https://vtk.org/mailman/listinfo/vtk-developers
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://vtk.org/pipermail/vtk-developers/attachments/20180321/4aa223a4/attachment-0001.html>


More information about the vtk-developers mailing list