# Bioequivalence and Bioavailability Forum 00:40 CET

## Nervous ticks in C - a reminder of the cruel logic of logic [Software]

Hi all,

sometimes logic totally sucks.

I am making code in C for plotting various graphs, and am making a little routine for inserting ticks on an axis. Ticks have to be "nice" (yes, that's also the word used in the R documentation).

So, let us say the maximum observed value is `x=0.234567` and I want ticks evenly dispersed at a distance of dx=0.05 (say from 0.0 and upwards). So, I thought I was clever and calculated the "maximum" tick as
`xmax = dx*ceil(x/dx)`

You can see one definition of the ceil function here.

So, one way to test it is like this, which will print the actual ticks:
``` int Test10001(double x, double dx) {     double xmax;     xmax=dx*ceil(x/dx);     x=0.0;     while (x<=xmax)     {         printf("x=%f\n",x);         x=x+dx;     }     return(0); }```

When I call that function with arguments `0.234567 `and `0.05` it prints:
```x=0.000000 x=0.050000 x=0.100000 x=0.150000 x=0.200000```

but it doesn't print 0.25 ?!???

If I add a line like
`printf("xmax=%f\n", xmax);`

then I get
`xmax=0.250000`

This is the beauty of C. Sometimes it is all-out warfare with this language and little tasks that should take 2 minutes take 2 days and end up with theory around little endians and data types and ANSI specifications and God knows what else .

``` if (3) 4 x=c("Foo", "Bar") b=data.frame(x) typeof(b[,1]) ##aha, integer? b[,1]+1 ##then let me add 1 ```

Best regards,
ElMaestro

"(...) targeted cancer therapies will benefit fewer than 2 percent of the cancer patients they’re aimed at. That reality is often lost on consumers, who are being fed a steady diet of winning anecdotes about miracle cures." New York Times (ed.), June 9, 2018.

Bioequivalence and Bioavailability Forum |  Admin contact
19,154 posts in 4,080 threads, 1,308 registered users;
online 16 (0 registered, 16 guests [including 9 identified bots]).

One can show the following: given any rule, however “fundamental”
or “necessary” for science, there are always circumstances
when it is advisable not only to ignore the rule,
but to adopt its opposite.    Paul Feyerabend

The BIOEQUIVALENCE / BIOAVAILABILITY FORUM is hosted by
Ing. Helmut Schütz