本文整理汇总了C++中r8_abs函数的典型用法代码示例。如果您正苦于以下问题:C++ r8_abs函数的具体用法?C++ r8_abs怎么用?C++ r8_abs使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了r8_abs函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: r8mat_amax
double r8mat_amax ( int m, int n, double a[] )
/******************************************************************************/
/*
Purpose:
R8MAT_AMAX returns the maximum absolute value entry of an R8MAT.
Discussion:
An R8MAT is a doubly dimensioned array of R8 values, stored as a vector
in column-major order.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
07 September 2012
Author:
John Burkardt
Parameters:
Input, int M, the number of rows in A.
Input, int N, the number of columns in A.
Input, double A[M*N], the M by N matrix.
Output, double R8MAT_AMAX, the maximum absolute value entry of A.
*/
{
int i;
int j;
double value;
value = r8_abs ( a[0+0*m] );
for ( j = 0; j < n; j++ )
{
for ( i = 0; i < m; i++ )
{
if ( value < r8_abs ( a[i+j*m] ) )
{
value = r8_abs ( a[i+j*m] );
}
}
}
return value;
}
示例2: zabs1
double zabs1 ( _Complex double z )
/******************************************************************************/
/*
Purpose:
ZABS1 returns the L1 norm of a number.
Discussion:
This routine uses double precision complex arithmetic.
The L1 norm of a complex number is the sum of the absolute values
of the real and imaginary components.
ZABS1 ( Z ) = abs ( real ( Z ) ) + abs ( imaginary ( Z ) )
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
31 March 2007
Author:
C version by John Burkardt
Reference:
Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart,
LINPACK User's Guide,
SIAM, 1979.
Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
Basic Linear Algebra Subprograms for FORTRAN usage,
ACM Transactions on Mathematical Software,
Volume 5, Number 3, pages 308-323, 1979.
Parameters:
Input, _Complex double Z, the number whose norm is desired.
Output, double ZABS1, the L1 norm of Z.
*/
{
double value;
value = r8_abs ( creal ( z ) ) + r8_abs ( cimagf ( z ) );
return value;
}
示例3: r8_nint
int r8_nint ( double x )
{
int value;
if ( x < 0.0 )
{
value = - ( int ) ( r8_abs ( x ) + 0.5 );
}
else
{
value = ( int ) ( r8_abs ( x ) + 0.5 );
}
return value;
}
示例4: test05
void test05 ( )
/******************************************************************************/
/*
Purpose:
TEST05 tests P00_GAUSS_HERMITE against the polynomials.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
11 September 2012
Author:
John Burkardt
*/
{
double error;
double estimate;
double exact;
int m;
int order;
int order_log;
int problem;
printf ( "\n" );
printf ( "TEST05\n" );
printf ( " P00_GAUSS_HERMITE applies a Gauss-Hermite rule to\n" );
printf ( " estimate the integral x^m exp(-x*x) over (-oo,+oo).\n" );
problem = 6;
printf ( "\n" );
printf ( " M Order Estimate Exact Error\n" );
for ( m = 0; m <= 6; m++ )
{
p06_param ( 'S', 'M', &m );
exact = p00_exact ( problem );
printf ( "\n" );
for ( order = 1; order <= 3 + ( m / 2 ); order++ )
{
estimate = p00_gauss_hermite ( problem, order );
error = r8_abs ( exact - estimate );
printf ( " %8d %8d %14g %14g %14g\n",
m, order, estimate, exact, error );
}
}
return;
}
示例5: test02
void test02 ( void )
/******************************************************************************/
/*
Purpose:
TEST02 demonstrates the use of BIVNOR.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
13 April 2012
Author:
John Burkardt
*/
{
double fxy1;
double fxy2;
int n_data;
double r;
double x;
double y;
printf ( "\n" );
printf ( "TEST02:\n" );
printf ( " BIVNOR computes the bivariate normal probability.\n" );
printf ( " Compare to tabulated values.\n" );
printf ( "\n" );
printf ( " X Y " );
printf ( "R P P DIFF\n" );
printf ( " " );
printf ( " (Tabulated) (BIVNOR)\n" );
printf ( "\n" );
n_data = 0;
for ( ; ; )
{
bivariate_normal_cdf_values ( &n_data, &x, &y, &r, &fxy1 );
if ( n_data == 0 )
{
break;
}
fxy2 = bivnor ( - x, - y, r );
printf ( " %12.4f %12.4f %12.4f %24.16f %24.16f %10.4g\n",
x, y, r, fxy1, fxy2, r8_abs ( fxy1 - fxy2 ) );
}
return;
}
示例6: test01
void test01 ( void )
/******************************************************************************/
/*
Purpose:
TEST01 demonstrates the use of T.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
21 November 2010
Author:
John Burkardt
*/
{
double a;
double h;
int n_data;
double t1;
double t2;
printf ( "\n" );
printf ( "TEST01:\n" );
printf ( " T computes Owen's T function.\n" );
printf ( " Compare to tabulated values.\n" );
printf ( "\n" );
printf ( " H A " );
printf ( " T T \n" );
printf ( " " );
printf ( " (Tabulated) (TFN) DIFF\n" );
printf ( "\n" );
n_data = 0;
for ( ; ; )
{
owen_values ( &n_data, &h, &a, &t1 );
if ( n_data == 0 )
{
break;
}
t2 = t ( h, a );
printf ( " %12.4f %12.4f %24.16f %24.16f %10.4g\n",
h, a, t1, t2, r8_abs ( t1 - t2 ) );
}
return;
}
示例7: test04
void test04 ( void )
/******************************************************************************/
/*
Purpose:
TEST04 demonstrates the use of ZNORM2.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
23 November 2010
Author:
John Burkardt
*/
{
double fx1;
double fx2;
int n_data;
double x;
printf ( "\n" );
printf ( "TEST04:\n" );
printf ( " ZNORM2 computes the complementary normal CDF.\n" );
printf ( " Compare to tabulated values.\n" );
printf ( "\n" );
printf ( " X P P DIFF\n" );
printf ( " (Tabulated) (ZNORM2)\n" );
printf ( "\n" );
n_data = 0;
for ( ; ; )
{
normal_01_cdf_values ( &n_data, &x, &fx1 );
if ( n_data == 0 )
{
break;
}
fx1 = 1.0 - fx1;
fx2 = znorm2 ( x );
printf ( " %12.4f %24.16f %24.16f %10.4g\n",
x, fx1, fx2, r8_abs ( fx1 - fx2 ) );
}
return;
}
示例8: test02
void test02 ( void )
/******************************************************************************/
/*
Purpose:
TEST02 demonstrates the use of MDBETA.
Modified:
30 January 2008
Author:
John Burkardt
*/
{
double fx;
double fx2;
int ier;
int n_data;
double p;
double q;
double x;
printf ( "\n" );
printf ( "TEST02:\n" );
printf ( " MDBETA estimates the value of th modified Beta function.\n" );
printf ( " Compare with tabulated values.\n" );
printf ( "\n" );
printf ( " X P Q Beta Beta DIFF\n" );
printf ( " (Tabulated) (MDBETA)\n" );
printf ( "\n" );
n_data = 0;
for ( ; ; )
{
beta_cdf_values ( &n_data, &p, &q, &x, &fx );
if ( n_data == 0 )
{
break;
}
fx2 = mdbeta ( x, p, q, &ier );
printf ( " %8.4f %8.4f %8.4f %24.16e %24.16e %10.4e\n",
x, p, q, fx, fx2, r8_abs ( fx - fx2 ) );
}
return;
}
示例9: test01
void test01 ( void )
/******************************************************************************/
/*
Purpose:
TEST01 demonstrates the use of ALOGAM.
Modified:
30 January 2008
Author:
John Burkardt
*/
{
double fx;
double fx2;
int ifault;
int n_data;
double x;
printf ( "\n" );
printf ( "TEST01:\n" );
printf ( " ALOGAM computes the logarithm of the \n" );
printf ( " Gamma function. We compare the result\n" );
printf ( " to tabulated values.\n" );
printf ( "\n" );
printf ( " X FX FX2\n" );
printf ( " (Tabulated) (ALOGAM) DIFF\n" );
printf ( "\n" );
n_data = 0;
for ( ; ; )
{
gamma_log_values ( &n_data, &x, &fx );
if ( n_data == 0 )
{
break;
}
fx2 = alogam ( x, &ifault );
printf ( " %24.16e %24.16e %24.16e %10.4e\n",
x, fx, fx2, r8_abs ( fx - fx2 ) );
}
return;
}
示例10: dqrank
void dqrank(double a[], int lda, int m, int n, double tol, int* kr,
int jpvt[], double qraux[])
/******************************************************************************/
/*
Purpose:
DQRANK computes the QR factorization of a rectangular matrix.
Discussion:
This routine is used in conjunction with DQRLSS to solve
overdetermined, underdetermined and singular linear systems
in a least squares sense.
DQRANK uses the LINPACK subroutine DQRDC to compute the QR
factorization, with column pivoting, of an M by N matrix A.
The numerical rank is determined using the tolerance TOL.
Note that on output, ABS ( A(1,1) ) / ABS ( A(KR,KR) ) is an estimate
of the condition number of the matrix of independent columns,
and of R. This estimate will be <= 1/TOL.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
21 April 2012
Author:
C version by John Burkardt.
Reference:
Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart,
LINPACK User's Guide,
SIAM, 1979,
ISBN13: 978-0-898711-72-1,
LC: QA214.L56.
Parameters:
Input/output, double A[LDA*N]. On input, the matrix whose
decomposition is to be computed. On output, the information from DQRDC.
The triangular matrix R of the QR factorization is contained in the
upper triangle and information needed to recover the orthogonal
matrix Q is stored below the diagonal in A and in the vector QRAUX.
Input, int LDA, the leading dimension of A, which must
be at least M.
Input, int M, the number of rows of A.
Input, int N, the number of columns of A.
Input, double TOL, a relative tolerance used to determine the
numerical rank. The problem should be scaled so that all the elements
of A have roughly the same absolute accuracy, EPS. Then a reasonable
value for TOL is roughly EPS divided by the magnitude of the largest
element.
Output, int *KR, the numerical rank.
Output, int JPVT[N], the pivot information from DQRDC.
Columns JPVT(1), ..., JPVT(KR) of the original matrix are linearly
independent to within the tolerance TOL and the remaining columns
are linearly dependent.
Output, double QRAUX[N], will contain extra information defining
the QR factorization.
*/
{
double work[n];
for (int i = 0; i < n; i++)
jpvt[i] = 0;
int job = 1;
dqrdc(a, lda, m, n, qraux, jpvt, work, job);
*kr = 0;
int k = i4_min(m, n);
for (int j = 0; j < k; j++) {
if (r8_abs(a[j + j * lda]) <= tol * r8_abs(a[0 + 0 * lda]))
return;
*kr = j + 1;
}
}
示例11: r8_test
void r8_test ( int logn_max )
/******************************************************************************/
/*
Purpose:
R8_TEST estimates the value of PI using double.
Discussion:
PI is estimated using N terms. N is increased from 10^2 to 10^LOGN_MAX.
The calculation is repeated using both sequential and Open MP enabled code.
Wall clock time is measured by calling SYSTEM_CLOCK.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
13 November 2007
Author:
John Burkardt
*/
{
double error;
double estimate;
int logn;
char mode[4];
int n;
double r8_pi = 3.141592653589793;
double wtime;
printf ( "\n" );
printf ( "R8_TEST:\n" );
printf ( " Estimate the value of PI,\n" );
printf ( " using double arithmetic.\n" );
printf ( "\n" );
printf ( " N = number of terms computed and added;\n" );
printf ( "\n" );
printf ( " MODE = SEQ for sequential code;\n" );
printf ( " MODE = OMP for Open MP enabled code;\n" );
printf ( " (performance depends on whether Open MP is used,\n" );
printf ( " and how many processes are available)\n" );
printf ( "\n" );
printf ( " ESTIMATE = the computed estimate of PI;\n" );
printf ( "\n" );
printf ( " ERROR = ( the computed estimate - PI );\n" );
printf ( "\n" );
printf ( " TIME = elapsed wall clock time;\n" );
printf ( "\n" );
printf ( " Note that you can''t increase N forever, because:\n" );
printf ( " A) ROUNDOFF starts to be a problem, and\n" );
printf ( " B) maximum integer size is a problem.\n" );
printf ( "\n" );
printf ( " N Mode Estimate Error Time\n" );
printf ( "\n" );
n = 1;
for ( logn = 1; logn <= logn_max; logn++ )
{
/*
Note that when I set N = 10**LOGN directly, rather than using
recursion, I got inaccurate values of N when LOGN was "large",
that is, for LOGN = 10, despite the fact that N itself was
a KIND = 8 integer!
Sequential calculation.
*/
strcpy ( mode, "SEQ" );
wtime = omp_get_wtime ( );
estimate = r8_pi_est_seq ( n );
wtime = omp_get_wtime ( ) - wtime;
error = r8_abs ( estimate - r8_pi );
printf ( "%14d %s %14f %14g %14f\n", n, mode, estimate, error, wtime );
/*
Open MP enabled calculation.
*/
strcpy ( mode, "OMP" );
wtime = omp_get_wtime ( );
estimate = r8_pi_est_omp ( n );
wtime = omp_get_wtime ( ) - wtime;
error = r8_abs ( estimate - r8_pi );
printf ( "%14d %s %14f %14g %14f\n", n, mode, estimate, error, wtime );
n = n * 10;
}
//.........这里部分代码省略.........
示例12: test03
void test03 ( )
/******************************************************************************/
/*
Purpose:
TEST03 tests P00_GAUSS_HERMITE.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
11 September 2012
Author:
John Burkardt
*/
{
double error;
double estimate;
double exact;
int m;
int order;
int order_log;
int problem;
int problem_num;
printf ( "\n" );
printf ( "TEST03\n" );
printf ( " P00_GAUSS_HERMITE applies a Gauss-Hermite rule\n" );
printf ( " to estimate an integral on (-oo,+oo).\n" );
problem_num = p00_problem_num ( );
m = 4;
p06_param ( 'S', 'M', &m );
printf ( "\n" );
printf ( " Problem Order Estimate Exact Error\n" );
for ( problem = 1; problem <= problem_num; problem++ )
{
exact = p00_exact ( problem );
order = 1;
printf ( "\n" );
for ( order_log = 0; order_log <= 6; order_log++ )
{
estimate = p00_gauss_hermite ( problem, order );
error = r8_abs ( exact - estimate );
printf ( " %8d %8d %14.6g %14.6g %14.6g\n",
problem, order, estimate, exact, error );
order = order * 2;
}
}
return;
}
示例13: class_matrix
double class_matrix ( int kind, int m, double alpha, double beta, double aj[],
double bj[] )
/******************************************************************************/
/*
Purpose:
CLASS_MATRIX computes the Jacobi matrix for a quadrature rule.
Discussion:
This routine computes the diagonal AJ and sub-diagonal BJ
elements of the order M tridiagonal symmetric Jacobi matrix
associated with the polynomials orthogonal with respect to
the weight function specified by KIND.
For weight functions 1-7, M elements are defined in BJ even
though only M-1 are needed. For weight function 8, BJ(M) is
set to zero.
The zero-th moment of the weight function is returned in ZEMU.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
11 January 2010
Author:
Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
C version by John Burkardt.
Reference:
Sylvan Elhay, Jaroslav Kautsky,
Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
Interpolatory Quadrature,
ACM Transactions on Mathematical Software,
Volume 13, Number 4, December 1987, pages 399-415.
Parameters:
Input, int KIND, the rule.
1, Legendre, (a,b) 1.0
2, Chebyshev Type 1, (a,b) ((b-x)*(x-a))^(-0.5)
3, Gegenbauer, (a,b) ((b-x)*(x-a))^alpha
4, Jacobi, (a,b) (b-x)^alpha*(x-a)^beta
5, Generalized Laguerre, (a,inf) (x-a)^alpha*exp(-b*(x-a))
6, Generalized Hermite, (-inf,inf) |x-a|^alpha*exp(-b*(x-a)^2)
7, Exponential, (a,b) |x-(a+b)/2.0|^alpha
8, Rational, (a,inf) (x-a)^alpha*(x+b)^beta
Input, int M, the order of the Jacobi matrix.
Input, double ALPHA, the value of Alpha, if needed.
Input, double BETA, the value of Beta, if needed.
Output, double AJ[M], BJ[M], the diagonal and subdiagonal
of the Jacobi matrix.
Output, double CLASS_MATRIX, the zero-th moment.
*/
{
double a2b2;
double ab;
double aba;
double abi;
double abj;
double abti;
double apone;
int i;
const double pi = 3.14159265358979323846264338327950;
double temp;
double temp2;
double zemu;
temp = r8_epsilon ( );
parchk ( kind, 2 * m - 1, alpha, beta );
temp2 = 0.5;
if ( 500.0 * temp < r8_abs ( pow ( r8_gamma ( temp2 ), 2 ) - pi ) )
{
printf ( "\n" );
printf ( "CLASS_MATRIX - Fatal error!\n" );
printf ( " Gamma function does not match machine parameters.\n" );
exit ( 1 );
}
if ( kind == 1 )
{
ab = 0.0;
zemu = 2.0 / ( ab + 1.0 );
//.........这里部分代码省略.........
示例14: ppchi2
//.........这里部分代码省略.........
c = xx - 1.0;
/*
Starting approximation for small chi-squared
*/
if ( v < - c5 * log ( p ) )
{
ch = pow ( p * xx * exp ( g + xx * aa ), 1.0 / xx );
if ( ch < e )
{
value = ch;
return value;
}
}
/*
Starting approximation for V less than or equal to 0.32
*/
else if ( v <= c3 )
{
ch = c4;
a = log ( 1.0 - p );
for ( ; ; )
{
q = ch;
p1 = 1.0 + ch * ( c7 + ch );
p2 = ch * (c9 + ch * ( c8 + ch ) );
t = - 0.5 + (c7 + 2.0 * ch ) / p1 - ( c9 + ch * ( c10 +
3.0 * ch ) ) / p2;
ch = ch - ( 1.0 - exp ( a + g + 0.5 * ch + c * aa ) * p2 / p1) / t;
if ( r8_abs ( q / ch - 1.0 ) <= c1 )
{
break;
}
}
}
else
{
/*
Call to algorithm AS 111 - note that P has been tested above.
AS 241 could be used as an alternative.
*/
x = ppnd ( p, ifault );
/*
Starting approximation using Wilson and Hilferty estimate
*/
p1 = c2 / v;
ch = v * pow ( x * sqrt ( p1 ) + 1.0 - p1, 3 );
/*
Starting approximation for P tending to 1.
*/
if ( c6 * v + 6.0 < ch )
{
ch = - 2.0 * ( log ( 1.0 - p ) - c * log ( 0.5 * ch ) + g );
}
}
/*
Call to algorithm AS 239 and calculation of seven term
Taylor series
*/
for ( i = 1; i <= maxit; i++ )
{
q = ch;
示例15: malloc
double *r8ge_fs_new ( int n, double a[], double b[] )
/******************************************************************************/
/*
Purpose:
R8GE_FS_NEW factors and solves a R8GE system.
Discussion:
The R8GE storage format is used for a "general" M by N matrix.
A physical storage space is made for each logical entry. The two
dimensional logical array is mapped to a vector, in which storage is
by columns.
The function does not save the LU factors of the matrix, and hence cannot
be used to efficiently solve multiple linear systems, or even to
factor A at one time, and solve a single linear system at a later time.
The function uses partial pivoting, but no pivot vector is required.
Licensing:
This code is distributed under the GNU LGPL license.
Modified:
10 February 2012
Author:
John Burkardt
Parameters:
Input, int N, the order of the matrix.
N must be positive.
Input/output, double A[N*N].
On input, A is the coefficient matrix of the linear system.
On output, A is in unit upper triangular form, and
represents the U factor of an LU factorization of the
original coefficient matrix.
Input, double B[N], the right hand side of the linear system.
Output, double R8GE_FS_NEW[N], the solution of the linear system.
*/
{
int i;
int ipiv;
int j;
int jcol;
double piv;
double t;
double *x;
x = ( double * ) malloc ( n * sizeof ( double ) );
for ( i = 0; i < n; i++ )
{
x[i] = b[i];
}
for ( jcol = 1; jcol <= n; jcol++ )
{
/*
Find the maximum element in column I.
*/
piv = r8_abs ( a[jcol-1+(jcol-1)*n] );
ipiv = jcol;
for ( i = jcol+1; i <= n; i++ )
{
if ( piv < r8_abs ( a[i-1+(jcol-1)*n] ) )
{
piv = r8_abs ( a[i-1+(jcol-1)*n] );
ipiv = i;
}
}
if ( piv == 0.0 )
{
fprintf ( stderr, "\n" );
fprintf ( stderr, "R8GE_FS_NEW - Fatal error!\n" );
fprintf ( stderr, " Zero pivot on step %d\n", jcol );
exit ( 1 );
}
/*
Switch rows JCOL and IPIV, and X.
*/
if ( jcol != ipiv )
{
for ( j = 1; j <= n; j++ )
{
t = a[jcol-1+(j-1)*n];
a[jcol-1+(j-1)*n] = a[ipiv-1+(j-1)*n];
a[ipiv-1+(j-1)*n] = t;
}
t = x[jcol-1];
x[jcol-1] = x[ipiv-1];
//.........这里部分代码省略.........