Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Ada > Re: Epsilon
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 4 Topic 5695 of 5874
Post > Topic >>

Re: Epsilon

by <adaworks@[EMAIL PROTECTED] > May 13, 2008 at 06:02 PM

Stephen,

Very clever.   Thank you.

Richard Riehle
============================================================
"Stephen Leake" <Stephe.Leake@[EMAIL PROTECTED]
> wrote in message 
news:umymuph04.fsf@[EMAIL PROTECTED]
> <adaworks@[EMAIL PROTECTED]
> writes:
>
>> I am looking for some short, practical examples of the Epsilon
>> attribute.  If you do have some source code examples to post,
>> please also send them to my academic email:  rdriehle@[EMAIL PROTECTED]
>
>   --  These values guarantee Integer_16 (value) or Unsigned_16
>   --  (value) won't raise Constraint_Error, and allow for maximum
>   --  round-off error. Useful with Clip_Scale_Limit when result will
>   --  be converted to Integer_16 or Unsigned_16.
>   Integer_16_First_Real : constant Real_Type := Real_Type 
> (Interfaces.Integer_16'First) - 0.5 +
>     (Real_Type'Epsilon * Real_Type (Interfaces.Integer_16'Last));
>
>   Integer_16_Last_Real  : constant Real_Type := Real_Type 
> (Interfaces.Integer_16'Last) + 0.5 -
>     (Real_Type'Epsilon * Real_Type (Interfaces.Integer_16'Last));
>
>   Unsigned_16_First_Real : constant Real_Type := -0.5 +
Real_Type'Epsilon;
>   Unsigned_16_Last_Real  : constant Real_Type := Real_Type 
> (Interfaces.Unsigned_16'Last) + 0.5 -
>     (Real_Type'Epsilon * Real_Type (Interfaces.Unsigned_16'Last));
>
>
>   function First_Order_Trig return Real_Type
>   is begin
>      return Elementary.Sqrt (Real_Type'Model_Epsilon);
>   end First_Order_Trig;
>
>   function Half_Trig (Trig : in Trig_Pair_Type) return Trig_Pair_Type
>   is
>      --  The result Trig.Cos is >= 0.0.
>      --
>      --  A linear approximation is used when Trig.Sin <
>      --  First_Order_Trig. this is exact since cos x = 1 - x**2 for
>      --  this range of x.
>   begin
>      if abs Trig.Sin < First_Order_Trig then
>         --  angle near 0 or Pi.
>         if Trig.Cos > 0.0 then
>            --  angle near 0
>            return (Trig.Sin / 2.0, 1.0);
>         else    -- angle near Pi
>            if Trig.Sin >= 0.0 then
>               return (1.0 - Trig.Sin / 2.0, 0.0);
>            else
>               return (-1.0 + Trig.Sin / 2.0, 0.0);
>            end if;
>         end if;
>      else    -- angle not near 0 or Pi
>         if Trig.Sin >= 0.0 then
>            return (Elementary.Sqrt ((1.0 - Trig.Cos) / 2.0),
Elementary.Sqrt 
> ((1.0 + Trig.Cos) / 2.0));
>         else
>            return (-Elementary.Sqrt ((1.0 - Trig.Cos) / 2.0),
Elementary.Sqrt 
> ((1.0 + Trig.Cos) / 2.0));
>         end if;
>      end if;
>   end Half_Trig;
>
> -- 
> -- Stephe
 




 4 Posts in Topic:
Epsilon
<adaworks@[EMAIL PROTE  2008-05-12 07:56:08 
Re: Epsilon
Stephen Leake <Stephe.  2008-05-13 07:42:35 
Re: Epsilon
<adaworks@[EMAIL PROTE  2008-05-13 18:02:05 
Re: Epsilon
Stephen Leake <Stephe.  2008-05-14 05:58:29 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Aug 27 17:39:56 CDT 2008.