Thanks for closing the loop :)

On Wed, 25 Sep 2019, 06:41 Jerry Jin, <[email protected]> wrote:

> thank you Leszek, you are right, i found the bug in my code, it was not
> exact translation
> now my javascript code can do the same numerical calculation, with same
> accuracy!
>
> On Wednesday, June 26, 2019 at 3:50:56 PM UTC+8, Jerry Jin wrote:
>>
>> thank you, i'll come back later with sample code
>>
>> On Wednesday, June 26, 2019 at 1:56:34 PM UTC+8, Leszek Swirski wrote:
>>>
>>> To be clear: both C++ and JS use the exact same "double" representation,
>>> neither is more precise than the other. In fact we use the exact same
>>> machine instructions to feel with them. The significant digits/decimal
>>> digits mentioned are when printing, not when calculating.
>>>
>>> So, if it's not x87 extra precision, then it must either be a non exact
>>> translation from C++ to JavaScript, or a bug. If you have a small repro
>>> that demonstrates the difference, then please file a bug and we'll take a
>>> look.
>>>
>>> - Leszek
>>>
>>>
>>> On Wed, 26 Jun 2019, 06:00 Jerry Jin, <[email protected]> wrote:
>>>
>>>> thank you, i googled around and found msvc double is using 64-bit sse,
>>>> not x87 fpu
>>>>
>>>> not sure if it's because c++ double has 16 significant figures and js
>>>> has 15
>>>>
>>>> On Tuesday, June 25, 2019 at 8:51:58 PM UTC+8, Jakob Kummerow wrote:
>>>>>
>>>>> If your original C++ code uses doubles, then porting it to
>>>>> TypeScript/JavaScript should be possible without loss of accuracy (and
>>>>> using plain built-in Numbers, no external libraries). If you have a
>>>>> reproducible counter-example, it would be interesting to hear about the
>>>>> details.
>>>>>
>>>>> The only exception I can think of is if your C++ compiler decided to
>>>>> emit x87 FPU code (on x86 hardware) which would use 80 bits (instead of 64
>>>>> bits) for intermediate results. But I don't think modern compilers still 
>>>>> do
>>>>> that; they should emit 64-bit SSE instructions.
>>>>>
>>>>> Side note: modern JavaScript has BigInts, which have arbitrary
>>>>> precision, but only integer values. So they're probably not useful for 
>>>>> your
>>>>> case, but depending on what problem you're solving, you might be able to
>>>>> reformulate it to use integers.
>>>>>
>>>>>
>>>>> On Tue, Jun 25, 2019 at 2:19 PM Dan Elphick <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> On Tuesday, June 25, 2019 at 10:24:56 AM UTC+1, Jerry Jin wrote:
>>>>>>>
>>>>>>> Hello,
>>>>>>> I'm new to v8-dev, sorry if this was already asked before.
>>>>>>>
>>>>>>> my problem is, i re-implemented a c++ numerical lib using
>>>>>>> typescript, and some test cases failed due to float number not having
>>>>>>> enough accuracy
>>>>>>> (i debugged js/c++ code side by side with chrome devtool&msvc)
>>>>>>> right now, my only option is to user third party lib like
>>>>>>> `decimal.js`
>>>>>>>
>>>>>>> i wonder is there any way to increase float number accuracy like c++
>>>>>>> double type?
>>>>>>>
>>>>>>
>>>>>>> example, is there anyway to store more than 15 decimal places in
>>>>>>> number
>>>>>>>
>>>>>>
>>>>>> Javascript and V8 already use doubles to represent floating point
>>>>>> numbers. However double precision floating point numbers can have about 
>>>>>> 16
>>>>>> significant figures, so it's not possible to get any more accuracy using
>>>>>> C++ double. You may be able to print more than that (e.g. pi.ToFixed(30)
>>>>>> but they won't be accurate beyond 15 decimal places.
>>>>>>
>>>>>>
>>>>>>> ```
>>>>>>> > let pi = 3.141592653589793238462643383280;
>>>>>>> < undefined
>>>>>>> > pi
>>>>>>> < 3.141592653589793
>>>>>>> ```
>>>>>>>
>>>>>>> not sure if this is possible in v8, if yes, where should i start?
>>>>>>>
>>>>>>> thanks!
>>>>>>>
>>>>>> --
>>>>>> --
>>>>>> v8-dev mailing list
>>>>>> [email protected]
>>>>>> http://groups.google.com/group/v8-dev
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "v8-dev" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/v8-dev/cfed0633-c6e7-45c4-a5c0-ca9f6cfaec9a%40googlegroups.com
>>>>>> <https://groups.google.com/d/msgid/v8-dev/cfed0633-c6e7-45c4-a5c0-ca9f6cfaec9a%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>> --
>>>> --
>>>> v8-dev mailing list
>>>> [email protected]
>>>> http://groups.google.com/group/v8-dev
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "v8-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/v8-dev/bc1e8872-a93a-405b-94b7-0a8ad01e24f2%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/v8-dev/bc1e8872-a93a-405b-94b7-0a8ad01e24f2%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/v8-dev/79e10225-6522-4524-810b-fa2db0f2e0e3%40googlegroups.com
> <https://groups.google.com/d/msgid/v8-dev/79e10225-6522-4524-810b-fa2db0f2e0e3%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/CAGRskv_ix8MVYtOAX4CRz8i40zUS73RYs7U8exYFvY%2B64nTOWA%40mail.gmail.com.

Reply via email to