/* See {pz_mismatch.h}. */ /* Last edited on 2008-02-08 11:44:29 by stolfi */ #include #include #include #define pz_mismatch_C_copyright "Copyright © 2001 Universidade Estadual de Campinas (UNICAMP)" #define pz_mismatch_C_authors "Helena C. G. Leitão and Jorge Stolfi, 2001--2008" Options ParseOptions( arparser_t pp ) RAISES {ParseParams.Error} = VAR o: Options; { argparser_get_keyword(pp, "-maxDist"); { /* with */ ??? d = argparser_get_next_double(pp, 0.0e0); /* do */ o.maxDistSqr := d*d END; argparser_get_keyword(pp, "-critDist"); { /* with */ ??? d = argparser_get_next_double(pp, 0.0e0); /* do */ o.critDistSqr := d*d END; argparser_get_keyword(pp, "-skipDist"); { /* with */ ??? d = argparser_get_next_double(pp, 0.0e0); /* do */ o.skipDistSqr := d*d END; return o } /* ParseOptions */ double Eval( double length /* Total length of pairing. */ double intgDistSqr, /* Integral of the curve distance squared and clipped. */ double totAsymm, /* Total step asymmetry. */ Options *o, /* Mismatch parameters. */ ) { return intgDistSqr - length * o.critDistSqr + totAsymm * o.skipDistSqr } /* Eval */ {