Re: Math.sincos(x)?

2017-06-23 Thread Robert Poor
> Allocating, filling, accessing and GC'ing the return object will take more time than calling the underlying C That seems like the nail in the coffin for this suggestion. Thanks. I don't have anything to add. On Fri, Jun 23, 2017 at 9:34 AM, Florian Bösch wrote: > On Thu, Jun 22, 2017 at 8:

Re: Math.sincos(x)?

2017-06-23 Thread Florian Bösch
On Thu, Jun 22, 2017 at 8:02 PM, Robert Poor wrote: > >function sincos(theta) { > return { sin: sin(theta), cos: cos(theta) }; >} > Allocating, filling, accessing and GC'ing the return object will take more time than calling the underlying C library function which emits the machine

Re: Math.sincos(x)?

2017-06-23 Thread Nicolas B. Pierron
On Fri, Jun 23, 2017 at 10:38 AM, Robert Poor wrote: >> `return { sin: sin(theta), cos: cos(theta) };` will add pressure to the >> nursery of the garbage collector. > > True -- forgive my ignorance, but is there a way to return multiple values > that does not cause heap allocation? That was my i

Re: Math.sincos(x)?

2017-06-23 Thread Robert Poor
I previously wrote: >> most implementations for cos(theta) actually generate sin(theta) as a "byproduct" As others several have pointed out, that's not really true. V8, for example, uses a (different) Taylor series approximation for sin and cos. But given the amount of work that goes into reduci

Re: Math.sincos(x)?

2017-06-23 Thread Nicolas B. Pierron
Hi Robert, On Thu, Jun 22, 2017 at 6:02 PM, Robert Poor wrote: > How often have you seen code that calls Math.sin() and Math.cos() with > the same argument, e.g: > >x = r * Math.cos(theta); >y = r * Math.sin(theta); > > ? This trope is repeated for polar coordinates, complex arithmetic,

Re: Math.sincos(x)?

2017-06-22 Thread kdex
Also the sign of the `cos` component is wrong for a bunch of inputs. On Thursday, June 22, 2017 8:16:21 PM CEST Boris Zbarsky wrote: > On 6/22/17 2:13 PM, Алексей wrote: > > function sincos (a) { > > > > const sin = Math.sin(a) > > const cos = (1 - sin**2)**0.5 > > This will completely f

Re: Math.sincos(x)?

2017-06-22 Thread Boris Zbarsky
On 6/22/17 2:13 PM, Алексей wrote: function sincos (a) { const sin = Math.sin(a) const cos = (1 - sin**2)**0.5 This will completely fail for a near pi/2. It will return zero instead of the correct small but nonzero value it should be returning. -Boris ___

Re: Math.sincos(x)?

2017-06-22 Thread Boris Zbarsky
On 6/22/17 2:02 PM, Robert Poor wrote: However, most implementations for cos(theta) actually generate sin(theta) as a "byproduct" (and vice-versa). At first glance, the v8 implementation of cos typically uses a Taylor series and does not compute sin. And the SpiderMonkey implementation of co

Re: Math.sincos(x)?

2017-06-22 Thread Алексей
If you think that performance of cos is too big (did you measure it?) than just calculate cos from sin with the formula sin^2 + con^2 = 1 ```js function sincos (a) { const sin = Math.sin(a) const cos = (1 - sin**2)**0.5 return {sin, cos} } ``` 2017-06-22 21:02 GMT+03:00 Robert Poor :

Math.sincos(x)?

2017-06-22 Thread Robert Poor
[Preamble: this is my first post to es-discuss -- if this isn't the right place to suggest language extensions, please let me know. Thanks. - rdp] How often have you seen code that calls Math.sin() and Math.cos() with the same argument, e.g: x = r * Math.cos(theta); y = r * Math.sin(theta);