File: check.hh

package info (click to toggle)
faust 2.79.3%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 397,496 kB
  • sloc: cpp: 278,433; ansic: 116,164; javascript: 18,529; vhdl: 14,052; sh: 13,884; java: 5,900; objc: 3,852; python: 3,222; makefile: 2,655; cs: 1,672; lisp: 1,146; ruby: 954; yacc: 586; xml: 471; lex: 247; awk: 110; tcl: 26
file content (42 lines) | stat: -rw-r--r-- 1,785 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#pragma once

#include <string>
#include <vector>

#include "interval_algebra.hh"
#include "interval_def.hh"
#include "utils.hh"

bool const taylor_lsb =
    false;  // flag that tells us to always compute the LSB using a Taylor expansion of the function
            // instead of going for the exact computation

void check(const std::string& testname, const itv::interval& exp);

void check(const std::string& testname, const itv::interval& exp, const itv::interval& res);

void check(const std::string& testname, bool exp, bool res);

using ufun = double (*)(double);
using bfun = double (*)(double, double);

using umth = itv::interval (itv::interval_algebra::*)(const itv::interval& x);
using bmth = itv::interval (itv::interval_algebra::*)(const itv::interval& x,
                                                      const itv::interval& y);

itv::interval testfun(int N, bfun f, const itv::interval& x, const itv::interval& y);
void          analyzemod(itv::interval x, itv::interval y);

int exactPrecisionUnary(ufun f, long double x, long double u);

void analyzeUnaryFunction(int E, int M, const char* title, const itv::interval& D, ufun f);
void analyzeUnaryMethod(int E, int M, const char* title, const itv::interval& D, ufun f, umth m);

void analyzeBinaryMethod(int E, int M, const char* title, const itv::interval& C,
                         const itv::interval& D, bfun f, bmth m);

void propagateBackwardsUnaryMethod(const char* title, umth f, itv::interval& X, int l);
void propagateBackwardsBinaryMethod(const char* title, bmth bm, itv::interval& X, itv::interval& Y,
                                    int l);
void propagateBackwardsComposition(std::vector<const char*> titles, std::vector<umth> mps,
                                   itv::interval& X, int l);