Legofit
infers population history from nucleotide site patterns.
rational.h
1#ifndef ARR_RATIONAL_H
2#define ARR_RATIONAL_H
3
4#include <stdio.h>
5typedef struct Rational Rational;
6
7struct Rational {
8 long num, den;
9};
10
11static const Rational Rational_zero = {.num=0, .den=1};
12static const Rational Rational_unity = {.num=1, .den=1};
13static const Rational Rational_inf = {.num=1, .den=0};
14static const Rational Rational_neginf = {.num=-1, .den=0};
15static const Rational Rational_nan = {.num=0, .den=0};
16
17long gcd(long x, long y);
19Rational Rational_set(long num, long denom);
26void Rational_pr(Rational x, FILE *fp);
28long double Rational_ldbl(Rational x);
29double Rational_dbl(Rational x);
30
31#endif
void Rational_pr(Rational x, FILE *fp)
Print.
Definition: rational.c:142
double Rational_dbl(Rational x)
Convert to double.
Definition: rational.c:161
int Rational_eq(Rational x, Rational y)
Return 1 if x and y are equal, 0 otherwise.
Definition: rational.c:147
Rational Rational_sub(Rational x, Rational y)
Subtract.
Definition: rational.c:90
Rational Rational_normalize(Rational x)
Remove common factors from numerator and denominator.
Definition: rational.c:51
Rational Rational_mul(Rational x, Rational y)
Multiply Before multiplying, this function first removes the greatest common divisor of (x....
Definition: rational.c:122
Rational Rational_div(Rational x, Rational y)
Divide.
Definition: rational.c:135
Rational Rational_add(Rational x, Rational y)
Add.
Definition: rational.c:73
Rational Rational_neg(Rational x)
Negate.
Definition: rational.c:103
long gcd(long x, long y)
Greatest common divisor: Lame's method.
Definition: rational.c:25
Rational Rational_inv(Rational x)
Invert.
Definition: rational.c:109
long double Rational_ldbl(Rational x)
Convert to long double.
Definition: rational.c:154
Rational Rational_set(long num, long den)
Set value, normalize.
Definition: rational.c:65
Definition: rational.h:7