tai 3 user commands djbwares
tai manipulate times with 1-second precision

    #include <tai.h>

    double \fBtai_approx\fP(&\fIt\fR);

    int \fBtai_less\fP(&\fIa\fR,&\fIb\fR);

    void \fBtai_add\fP(&\fIt\fR,&\fIa\fR,&\fIb\fR);

    void \fBtai_sub\fP(&\fIt\fR,&\fIa\fR,&\fIb\fR);

    struct tai \fIt\fR;

    struct tai \fIa\fR;

    struct tai \fIb\fR;

## Description

A `struct` tai stores 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\fR. 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 period of hundreds of billions of years. See `http://pobox.com/~djb/proto/tai64.txt` for more information. A `struct` tai variable may also be used to store the numerical difference between two TAI64 labels.

## Arithmetic

`tai_approx` returns a double-precision approximation to t. The result of `tai_approx` is always nonnegative. `tai_less` returns 1 if a is smaller than b, 0 otherwise. `tai_add` adds a and b modulo 2^64 and puts the result into t. The inputs and outputs may overlap. `tai_sub` subtracts b from a modulo 2^64 and puts the result into t. The inputs and outputs may overlap.

## See also

tai_now 3
tai_pack 3
taia 3
utc 3

## Author

Original code and documentation by Daniel J. Bernstein. Converted to DocBook XML by Jonathan de Boyne Pollard.