* C fmod function
@ 2006-04-12 14:10 Candida Ferreira
2006-04-12 15:39 ` Dmitry A. Kazakov
0 siblings, 1 reply; 6+ messages in thread
From: Candida Ferreira @ 2006-04-12 14:10 UTC (permalink / raw)
Hi everyone,
Is there in Ada a built-in function equivalent to the fmod function in C++?
Many thanks.
Candida
---
Candida Ferreira, Ph.D.
Chief Scientist, Gepsoft
http://www.gene-expression-programming.com/author.asp
GEP: Mathematical Modeling by an Artificial Intelligence
(Springer Verlag edition 2006)
http://www.gene-expression-programming.com/Books/index.asp
Online Version:
http://www.gene-expression-programming.com/GepBook/Introduction.htm
Modeling Software:
http://www.gepsoft.com/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: C fmod function
2006-04-12 14:10 C fmod function Candida Ferreira
@ 2006-04-12 15:39 ` Dmitry A. Kazakov
2006-04-12 15:49 ` Candida Ferreira
0 siblings, 1 reply; 6+ messages in thread
From: Dmitry A. Kazakov @ 2006-04-12 15:39 UTC (permalink / raw)
On Wed, 12 Apr 2006 14:10:28 GMT, Candida Ferreira wrote:
> Is there in Ada a built-in function equivalent to the fmod function in C++?
Yes. See Annex A.5.3, Remainder attribute defined for floating-point types.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: C fmod function
2006-04-12 15:39 ` Dmitry A. Kazakov
@ 2006-04-12 15:49 ` Candida Ferreira
2006-04-12 19:23 ` Dmitry A. Kazakov
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Candida Ferreira @ 2006-04-12 15:49 UTC (permalink / raw)
Dmitry A. Kazakov wrote:
>> Is there in Ada a built-in function equivalent to the fmod function in
>> C++?
>
> Yes. See Annex A.5.3, Remainder attribute defined for floating-point
> types.
Thanks, Dmitry. I was aware of the Remainder attribute, but having read the
definition I wasn't sure if it corresponded exactly to the C++ fmod function
which can be represented by the generic expression fMod(x,y) = ((x / y) -
(Sign(x / y) * Floor(Abs(x / y)))) * y.
Best wishes,
Candida
---
Candida Ferreira, Ph.D.
Chief Scientist, Gepsoft
http://www.gene-expression-programming.com/author.asp
GEP: Mathematical Modeling by an Artificial Intelligence
(Springer Verlag edition 2006)
http://www.gene-expression-programming.com/Books/index.asp
Online Version:
http://www.gene-expression-programming.com/GepBook/Introduction.htm
Modeling Software:
http://www.gepsoft.com/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: C fmod function
2006-04-12 15:49 ` Candida Ferreira
@ 2006-04-12 19:23 ` Dmitry A. Kazakov
2006-04-12 19:38 ` Candida Ferreira
2006-04-13 9:36 ` Candida Ferreira
2 siblings, 0 replies; 6+ messages in thread
From: Dmitry A. Kazakov @ 2006-04-12 19:23 UTC (permalink / raw)
On Wed, 12 Apr 2006 15:49:36 GMT, Candida Ferreira wrote:
> Dmitry A. Kazakov wrote:
>>> Is there in Ada a built-in function equivalent to the fmod function in
>>> C++?
>>
>> Yes. See Annex A.5.3, Remainder attribute defined for floating-point
>> types.
>
> Thanks, Dmitry. I was aware of the Remainder attribute, but having read the
> definition I wasn't sure if it corresponded exactly to the C++ fmod function
> which can be represented by the generic expression fMod(x,y) = ((x / y) -
> (Sign(x / y) * Floor(Abs(x / y)))) * y.
Yes, you are right. The above rounds towards zero and the result has the
sign of x. Ada's remainder rounds to the nearest number, so the sign can be
any and the result's absolute value is no greater than |y/2|.
You can convert it to fmod as follows:
f := S'Remainder (x, y);
if Sign (x) = Sign (f) then
return f;
elsif Sign (y) = Sign (f) then
return f - y;
else
return f + y;
end if;
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: C fmod function
2006-04-12 15:49 ` Candida Ferreira
2006-04-12 19:23 ` Dmitry A. Kazakov
@ 2006-04-12 19:38 ` Candida Ferreira
2006-04-13 9:36 ` Candida Ferreira
2 siblings, 0 replies; 6+ messages in thread
From: Candida Ferreira @ 2006-04-12 19:38 UTC (permalink / raw)
I was finally able to test it and Ada's Remainder is not the same as C++
fmod. C++ fmod can be expressed by the generic form fMod(x,y) = ((x / y) -
(Sign(x / y) * Floor(Abs(x / y)))) * y.
Candida
"Candida Ferreira" <cferreira@seehomepage.com> wrote in message
news:kk9%f.233449$zk4.160702@fe3.news.blueyonder.co.uk...
> Dmitry A. Kazakov wrote:
>>> Is there in Ada a built-in function equivalent to the fmod function in
>>> C++?
>>
>> Yes. See Annex A.5.3, Remainder attribute defined for floating-point
>> types.
>
> Thanks, Dmitry. I was aware of the Remainder attribute, but having read
> the definition I wasn't sure if it corresponded exactly to the C++ fmod
> function which can be represented by the generic expression fMod(x,y) =
> ((x / y) - (Sign(x / y) * Floor(Abs(x / y)))) * y.
>
> Best wishes,
> Candida
>
> ---
> Candida Ferreira, Ph.D.
> Chief Scientist, Gepsoft
> http://www.gene-expression-programming.com/author.asp
>
> GEP: Mathematical Modeling by an Artificial Intelligence
> (Springer Verlag edition 2006)
> http://www.gene-expression-programming.com/Books/index.asp
> Online Version:
> http://www.gene-expression-programming.com/GepBook/Introduction.htm
>
> Modeling Software:
> http://www.gepsoft.com/
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: C fmod function
2006-04-12 15:49 ` Candida Ferreira
2006-04-12 19:23 ` Dmitry A. Kazakov
2006-04-12 19:38 ` Candida Ferreira
@ 2006-04-13 9:36 ` Candida Ferreira
2 siblings, 0 replies; 6+ messages in thread
From: Candida Ferreira @ 2006-04-13 9:36 UTC (permalink / raw)
I was finally able to test it and Ada's Remainder is not the same as C++
fmod. C++ fmod can be expressed by the generic form fMod(x,y) = ((x / y) -
(Sign(x / y) * Floor(Abs(x / y)))) * y.
Candida
"Candida Ferreira" <cferreira@seehomepage.com> wrote in message
news:kk9%f.233449$zk4.160702@fe3.news.blueyonder.co.uk...
> Dmitry A. Kazakov wrote:
>>> Is there in Ada a built-in function equivalent to the fmod function in
>>> C++?
>>
>> Yes. See Annex A.5.3, Remainder attribute defined for floating-point
>> types.
>
> Thanks, Dmitry. I was aware of the Remainder attribute, but having read
> the definition I wasn't sure if it corresponded exactly to the C++ fmod
> function which can be represented by the generic expression fMod(x,y) =
> ((x / y) - (Sign(x / y) * Floor(Abs(x / y)))) * y.
>
> Best wishes,
> Candida
>
> ---
> Candida Ferreira, Ph.D.
> Chief Scientist, Gepsoft
> http://www.gene-expression-programming.com/author.asp
>
> GEP: Mathematical Modeling by an Artificial Intelligence
> (Springer Verlag edition 2006)
> http://www.gene-expression-programming.com/Books/index.asp
> Online Version:
> http://www.gene-expression-programming.com/GepBook/Introduction.htm
>
> Modeling Software:
> http://www.gepsoft.com/
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-04-13 9:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-12 14:10 C fmod function Candida Ferreira
2006-04-12 15:39 ` Dmitry A. Kazakov
2006-04-12 15:49 ` Candida Ferreira
2006-04-12 19:23 ` Dmitry A. Kazakov
2006-04-12 19:38 ` Candida Ferreira
2006-04-13 9:36 ` Candida Ferreira
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox