From: Claude Marche <Claude.Marche@lri.fr>
To: N Hur <mapnh@maths.bath.ac.uk>
Cc: caml-list@inria.fr
Subject: Re: nth_root of num?
Date: Thu, 26 Nov 1998 17:23:49 +0100 (MET) [thread overview]
Message-ID: <13917.32917.504083.314031@sun8f.LRI> (raw)
In-Reply-To: <Pine.SOL.4.05.9811251343120.18289-100000@odin.maths.bath.ac.uk>
>>>>> "Namhyun Hur" == N Hur <mapnh@maths.bath.ac.uk> writes:
Namhyun Hur> Hi,
Namhyun Hur> I am wondering if anyone has a function "nth_root"
Namhyun Hur> for big_int in camllight. As far as I know only
Namhyun Hur> "sqrt_big_int" is provided in the num library. Could
Namhyun Hur> anyone send me the code if it is possible?
Namhyun Hur> Regards,
Namhyun Hur> Namhyun Hur.
I have written one, here is the code. It works with a personal version
of power, where the second argument is an int, not a num.
There is one function that rounds the result to the floor, one to the
ceiling. Of course, it is working only on big_ints, not ratios.
Hope this helps, (Any comments welcome)
--
| Claude Marché | mailto:Claude.Marche@lri.fr |
| LRI - Bât. 490 | http://www.lri.fr/~marche/ |
| Université de Paris-Sud | phoneto: +33 1 69 15 64 85 |
| F-91405 ORSAY Cedex | faxto: +33 1 69 15 65 86 |
open Num;;
let num_one = Int 1;;
let rec power_num x = function
0 -> num_one
| 1 -> x
| n ->
let y = square_num (power_num x (n/2))
in
if (n mod 2)=0
then y
else mult_num y x
;;
let root_floor n x =
if le_num x num_one
then x
else
let predn = pred n
in
let numpredn = Int predn
and numn = Int n
in
let rec approx y =
let ypnm1 = (power_num y predn)
in
let new_y =
quo_num
(add_num (mult_num numpredn (mult_num y ypnm1)) x)
(mult_num numn ypnm1)
in
if ge_num new_y y
then y
else approx new_y
in
approx x
;;
let root_ceil n x =
succ_num (root_floor n (pred_num x))
;;
next prev parent reply other threads:[~1998-11-26 18:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-11-25 13:48 N Hur
1998-11-26 16:23 ` Claude Marche [this message]
[not found] ` <Pine.SOL.4.05.9812011025090.6015-100000@odin.maths.bath.ac.uk>
1998-12-01 10:35 ` Claude Marche
1998-12-01 20:25 ` John Whitley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=13917.32917.504083.314031@sun8f.LRI \
--to=claude.marche@lri.fr \
--cc=caml-list@inria.fr \
--cc=mapnh@maths.bath.ac.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).