## Bug #524

### modf

Status: | Resolved | Start date: | 05/31/2015 | |
---|---|---|---|---|

Priority: | Normal | Due date: | ||

Assignee: | - | % Done: | 100% | |

Category: | VM | Spent time: | - | |

Target version: | - |

**Description**

This Scol function in the std lib is wrong (or its documentation is wrong).

*mod* returns the modulo between two integers. It's right.*modf* should the same thing with two float numbers. It is incorrect.

More, the current source code of *modf* is :

(...) double x = MTOF(val0); double y = MTOF(val1); m->top[m->pp] = FTOM((float)(modf(x, &y)));

In C and C++, *modf* doesn't return a such "modulo" !

In the code above, *y* points to the integral part of *x*. In the top of the heap, it is its decimal part. So, the Scol *modf* returns only the decimal part of the first given float number.

The current state is this :

fun main ()= _showconsole; _fooId mod 390 360; // 30 _fooF modf 390.0 360.0; // 0.000000 0;;

### Associated revisions

Kernel :

closes #524

- correction on modf function

Kernel :

closes #524

- correction on modf function

### History

#### #1 Updated by arkeon about 2 years ago

weird it should be fmod : http://www.cplusplus.com/reference/cmath/fmod/

#### #2 Updated by arkeon about 2 years ago

**Status**changed from*New*to*Resolved***% Done**changed from*0*to*100*

Applied in changeset r7585.