*Manual Reference Pages - * TAIA (3)
### NAME
taia - manipulate times with 1-attosecond precision
### CONTENTS
Syntax
Description
Arithmetic
### SYNTAX
**#include <taia.h>**
double **taia_approx**(&*t*);
double **taia_frac**(&*t*);
void **taia_tai**(&*t*,&*sec*);
int **taia_less**(&*a*,&*b*);
void **taia_add**(&*t*,&*a*,&*b*);
void **taia_sub**(&*t*,&*a*,&*b*);
void **taia_half**(&*t*,&*a*);
unsigned int **taia_fmtfrac**(*s*,&*t*);
struct taia *t*;
struct taia *a*;
struct taia *b*;
struct tai *sec*;
char **s*;
### DESCRIPTION
A
**struct taia** stores an integer between 0 inclusive and 2^64x10^18 exclusive.
The format of
**struct taia** is designed to speed up common operations;
applications should not look inside
**struct taia**.
A
**struct taia** variable is commonly used to store
a TAI64NA label.
Each TAI64NA label refers to one attosecond of real time;
see
**http://pobox.com/~djb/proto/tai64.txt** for more information.
The integer in the
**struct taia** is 10^18 times the second count,
plus 10^9 times the nanosecond count,
plus the attosecond count.
A
**struct taia** variable may also be used to store
the numerical difference between two TAI64NA labels.
### ARITHMETIC
**taia_approx** returns a double-precision approximation to
*t*/10^18. The result of
**taia_approx** is always nonnegative.
**taia_tai** places into
*sec* the integer part of
*t*/10^18.
**taia_frac** returns a double-precision approximation to
the fraction part of
*t*/10^18. The result of
**taia_frac** is always nonnegative.
**taia_less** returns 1 if
*a* is smaller than
*b*, 0 otherwise.
**taia_add** adds
*a* and
*b* modulo 2^64x10^18
and puts the result into
*t*. The inputs and outputs may overlap.
**taia_sub** subtracts
*b* from
*a* modulo 2^64x10^18
and puts the result into
*t*. The inputs and outputs may overlap.
**taia_half** divides
*a* by 2, rounding down,
and puts the result into
*t*. The input and output may overlap.
### FORMATTING
**taia_fmtfrac** prints the remainder of
*t*/10^18, padded to exactly 18 digits,
into the character buffer
*s*, without a terminating NUL.
It returns 18, the number of characters written.
*s* may be zero;
then
**taia_fmtfrac** returns 18 without printing anything.
The macro
**TAIA_FMTFRAC** is defined as 19;
this is enough space for the output of
**taia_fmtfrac** and a terminating NUL.
### SEE ALSO
taia_now(3),
taia_pack(3),
tai(3)
Visit the GSP FreeBSD Man Page Interface. Output converted with manServer 1.07. |