Example #1
0
void Scm_PutBinaryF64(ScmUVector *uv, int off, ScmObj val, ScmSymbol *e)
{
    swap_f64_t v;
    CHECK_ENDIAN(e);
    v.val = Scm_GetDouble(val);
    SWAP_D(e, v);
    inject(uv, v.buf, off, 8);
}
Example #2
0
ScmObj Scm_GetBinaryF64(ScmUVector *uv, int off, ScmSymbol *endian)
{
    swap_f64_t v;
    CHECK_ENDIAN(endian);
    extract(uv, v.buf, off, 8);
    SWAP_D(endian, v);
    return Scm_MakeFlonum(v.val);
}
Example #3
0
ScmObj Scm_ReadBinaryF64(ScmPort *iport, ScmSymbol *endian)
{
    swap_f64_t v;
    CHECK_ENDIAN(endian);
    if (getbytes(v.buf, 8, iport) == EOF) return SCM_EOF;
    SWAP_D(endian, v);
    return Scm_MakeFlonum(v.val);
}
Example #4
0
void Scm_WriteBinaryF64(ScmObj sval, ScmPort *oport, ScmSymbol *endian)
{
    swap_f64_t v;
    ENSURE_OPORT(oport);
    CHECK_ENDIAN(endian);
    v.val = Scm_GetDouble(sval);
    SWAP_D(endian, v);
    Scm_Putz(v.buf, 8, oport);
}
Example #5
0
/* select fixed ambiguities --------------------------------------------------*/
static int sel_amb(int *sat1, int *sat2, double *N, double *var, int n)
{
    int i,j,flgs[MAXSAT]= {0},max_flg=0;

    /* sort by variance */
    for (i=0; i<n; i++) for (j=1; j<n-i; j++) {
            if (var[j]>=var[j-1]) continue;
            SWAP_I(sat1[j],sat1[j-1]);
            SWAP_I(sat2[j],sat2[j-1]);
            SWAP_D(N[j],N[j-1]);
            SWAP_D(var[j],var[j-1]);
        }
    /* select linearly independent satellite pair */
    for (i=j=0; i<n; i++) {
        if (!is_depend(sat1[i],sat2[i],flgs,&max_flg)) continue;
        sat1[j]=sat1[i];
        sat2[j]=sat2[i];
        N[j]=N[i];
        var[j++]=var[i];
    }
    return j;
}