#include <tai.h>
struct tai t;
A struct tai value is
an integer between 0 inclusive and 2^64 exclusive.
The format of struct tai
is designed to speed up common operations;
applications should not look inside struct tai.
A struct tai variable is commonly used to store a TAI64 label. Each TAI64 label refers to one second of real time. TAI64 labels span a range of hundreds of billions of years.
A struct tai variable may also be used to store the numerical difference between two TAI64 labels.
#include <tai.h>
struct tai t;
tai_now(&t);
tai_now
puts the current time into
t.
More precisely:
tai_now
puts into t
its best guess as to the TAI64 label for the 1-second interval
that contains the current time.
This implementation of tai_now assumes that the time_t returned from the time function represents the number of TAI seconds since 1970-01-01 00:00:10 TAI. This matches the convention used by the Olson tz library in ``right'' mode.
#include <tai.h>
struct tai t;
char buf[TAI_PACK];
tai_pack(buf,&t);
tai_unpack(buf,&t);
tai_pack converts a TAI64 label from internal format
in t to
external TAI64 format
in buf.
tai_unpack converts a TAI64 label from external TAI64 format in buf to internal format in t.
TAI_PACK is 8.
#include <tai.h>
struct tai t;
struct tai a;
struct tai b;
double d;
int i;
d = tai_approx(&t);
i = tai_less(&a,&b);
tai_add(&t,&a,&b);
tai_sub(&t,&a,&b);
tai_approx
returns a double-precision approximation to t.
The result of tai_approx is always nonnegative.
tai_less returns 1 if a is less than b, 0 otherwise.
tai_add adds a to b modulo 2^64 and puts the result into t. The inputs and output may overlap.
tai_sub subtracts b from a modulo 2^64 and puts the result into t. The inputs and output may overlap.