Good point, Raul. Depending on what you're doing, there are more or
less unconventional ways to compute triangle geometry. Probably the
one best supported by the existing library is the best one to use :) .

Found some links:

Here's a link to Wildberger's own intro (I personally recommend
ignoring his explanation of how awesome rational trig is, it's fun but
you have a job to do):
https://web.maths.unsw.edu.au/~norman/papers/RationalTrig.pdf

Here's someone else's paper on how to compute using it (compared to
how to compute using alternate methods):
http://www.cs.utep.edu/vladik/2008/olg08-01.pdf

Here's a quick little page giving you a rational triangle calculator
which might just solve your problem in the first place.
http://rationaltrigcalc.azurewebsites.net/

-Wm

On Tue, Mar 26, 2019 at 12:21 PM Raul Miller <rauldmil...@gmail.com> wrote:
>
> Or often you can avoid using angles entirely and use mechanisms based
> on cross product for contexts that demand "sine" and dot product for
> cosine...
>
> (Not always, though - especially if you're working through someone
> else's math notes which were explicitly about angles.)
>
> Thanks,
>
> --
> Raul
>
> On Tue, Mar 26, 2019 at 3:16 PM William Tanksley, Jr
> <wtanksle...@gmail.com> wrote:
> >
> > Does J provide rational trig functions? If not, you'll want to check
> > out N.J. Wildberger's rational trigonometry, based on "quadrance" (an
> > unsquare-rooted distance) and "spread" (like a relative slope of
> > quadrances). That way your rational numbers will stay rational until
> > it's time to convert them to display values.
> >
> > -Wm
> >
> > On Tue, Mar 26, 2019 at 12:12 PM Raul Miller <rauldmil...@gmail.com> wrote:
> > >
> > > The x: verb makes a best effort, converting floating point to rational.
> > >
> > >    x:3.14
> > > 157r50
> > >
> > > It's limited, of course, by both floating point precision and its own
> > > internal concepts of epsilon.
> > >
> > > I hope this helps,
> > >
> > > --
> > > Raul
> > >
> > > On Tue, Mar 26, 2019 at 3:08 PM Ian Clark <earthspo...@gmail.com> wrote:
> > > >
> > > > I'm doing trigonometry with very small angles and I want to keep all my
> > > > calculations in rational precision. Is there a J-supported way of
> > > > converting from floating-point precision to rational, or reasonably 
> > > > speedy
> > > > verbs to do the job routinely?
> > > >
> > > > My problem is this. Let PIa be π expressed as a rational number to 50
> > > > places of decimals (…or more!!)
> > > >
> > > >    PIa
> > > > 31415926535897932384626433832795028841971693993751r10000000000000000000000000000000000000000000000000
> > > >    datatype PIa
> > > > rational
> > > >    datatype y=: 1.23
> > > > floating
> > > >    datatype PIa + y   NB. loses precision...
> > > > floating
> > > >    datatype sin PIa   NB. likewise loses precision...
> > > > floating
> > > >
> > > > In other words, adding in (or otherwise combining) a number (y) which is
> > > > defined *exactly* as a decimal numeral (the sort of thing the SI system 
> > > > of
> > > > units does often) results in an avoidable loss of precision.
> > > >
> > > > (In case anyone's thinking at this point: aren't 64 bits good enough for
> > > > this guy? -- no, they aren't.)
> > > >
> > > > At present I'm using a mickey-mouse scheme of converting the decimal
> > > > numeral (":1.23) to a rational value by omitting the decimal point to 
> > > > get
> > > > '123', then reintroducing it as a denominator: '123r100' -- which I then
> > > > evaluate using (".) to give, in effect:
> > > >    datatype ya=: 123r100
> > > > rational
> > > >    datatype PIa + ya   NB. --now it behaves itself...
> > > > rational
> > > >
> > > > And of course I'm going to have to write my own sin and cosine verbs.
> > > >
> > > > The general purpose engine I'm writing not only needs a way of 
> > > > converting
> > > > an inputted numeral '1.23' to a rational number (a trivial task by the
> > > > above method) but also to check my results accumulator at every step to
> > > > stop it lapsing into floating-point precision, and maybe to convert it 
> > > > back
> > > > into rational precision.
> > > >
> > > > This last task is inefficient, the way I'm doing it. Does J have a 
> > > > built-in
> > > > way, or a standard way, that's faster than how I'm doing it?
> > > >
> > > > Ian Clark
> > > > ----------------------------------------------------------------------
> > > > For information about J forums see http://www.jsoftware.com/forums.htm
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to