1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 
3 /*
4  Copyright (C) 2003 Ferdinando Ametrano
5 
6  This file is part of QuantLib, a free-software/open-source library
7  for financial quantitative analysts and developers - http://quantlib.org/
8 
9  QuantLib is free software: you can redistribute it and/or modify it
10  under the terms of the QuantLib license.  You should have received a
11  copy of the license along with this program; if not, please email
12  <quantlib-dev@lists.sf.net>. The license is also available online at
13  <http://quantlib.org/license.shtml>.
14 
15  This program is distributed in the hope that it will be useful, but WITHOUT
16  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17  FOR A PARTICULAR PURPOSE.  See the license for more details.
18 */
19 
20 /*! \file errorfunction.hpp
21     \brief Error function
22 */
23 
24 #ifndef quantlib_error_function_h
25 #define quantlib_error_function_h
26 
27 #include <ql/types.hpp>
28 #include <functional>
29 
30 namespace QuantLib {
31 
32     //! %Error function
33     /*! formula here ...
34         Used to calculate the cumulative normal distribution function
35     */
36     class ErrorFunction {
37       public:
38         typedef Real argument_type;
39         typedef Real result_type;
40 
ErrorFunction()41         ErrorFunction() {}
42         // function
43         Real operator()(Real x) const;
44       private:
45         static const Real tiny, one, erx, efx, efx8;
46         static const Real pp0, pp1,pp2,pp3,pp4;
47         static const Real qq1,qq2,qq3,qq4,qq5;
48         static const Real pa0,pa1,pa2,pa3,pa4,pa5,pa6;
49         static const Real qa1,qa2,qa3,qa4,qa5,qa6;
50         static const Real ra0,ra1,ra2,ra3,ra4,ra5,ra6,ra7;
51         static const Real sa1,sa2,sa3,sa4,sa5,sa6,sa7,sa8;
52         static const Real rb0,rb1,rb2,rb3,rb4,rb5,rb6;
53         static const Real sb1,sb2,sb3,sb4,sb5,sb6,sb7;
54     };
55 
56 }
57 
58 
59 #endif
60