| 1 |
gezelter |
1600 |
/* |
| 2 |
|
|
* Matpack Wigner3jm special function imported and modified for use in |
| 3 |
|
|
* OpenMD |
| 4 |
|
|
* |
| 5 |
|
|
* Matpack Library Release 1.9.0 |
| 6 |
|
|
* Copyright (C) 1991-2003 by Berndt M. Gammel. All rights reserved. |
| 7 |
|
|
* |
| 8 |
|
|
* Permission to use, copy, and distribute Matpack in its entirety |
| 9 |
|
|
* and its documentation for non-commercial purpose and without fee |
| 10 |
|
|
* is hereby granted, provided that this license information and |
| 11 |
|
|
* copyright notice appear unmodified in all copies. This software |
| 12 |
|
|
* is provided 'as is' without express or implied warranty. In no |
| 13 |
|
|
* event will the author be held liable for any damages arising from |
| 14 |
|
|
* the use of this software. |
| 15 |
|
|
* |
| 16 |
|
|
* Note that distributing Matpack 'bundled' in with any product is |
| 17 |
|
|
* considered to be a 'commercial purpose'. |
| 18 |
|
|
* |
| 19 |
|
|
* The software may be modified for your own purposes, but modified |
| 20 |
|
|
* versions may not be distributed without prior consent of the |
| 21 |
|
|
* author. |
| 22 |
|
|
* |
| 23 |
|
|
* Read the COPYRIGHT and README files in this distribution about |
| 24 |
|
|
* registration and installation of Matpack. |
| 25 |
|
|
*/ |
| 26 |
|
|
|
| 27 |
|
|
#ifndef MATH_WIGNER3JM_HPP |
| 28 |
|
|
#define MATH_WIGNER3JM_HPP |
| 29 |
|
|
|
| 30 |
|
|
#include "config.h" |
| 31 |
|
|
|
| 32 |
|
|
namespace MATPACK { |
| 33 |
|
|
|
| 34 |
|
|
/// return sign of number |
| 35 |
|
|
template <class T> inline int sign (T x) |
| 36 |
|
|
{ return (x > 0) ? 1 : (x < 0) ? -1 : 0; } |
| 37 |
|
|
|
| 38 |
|
|
/* |
| 39 |
|
|
* MpMin(), MpMin(): min and max templates for 2 arguments (all that |
| 40 |
|
|
* is required for Wigner3jm ) |
| 41 |
|
|
*/ |
| 42 |
|
|
template <class T> inline T MpMin (T x, T y) |
| 43 |
|
|
{ return (x<y)?x:y; } |
| 44 |
|
|
template <class T> inline T MpMax (T x, T y) |
| 45 |
|
|
{ return (x>y)?x:y; } |
| 46 |
|
|
|
| 47 |
|
|
// even and odd |
| 48 |
|
|
|
| 49 |
|
|
inline int even(int x){return!(x&1);} |
| 50 |
|
|
inline int odd(int x){return(x&1);} |
| 51 |
|
|
|
| 52 |
|
|
void Wigner3jm(RealType l1, RealType l2, RealType l3, RealType m1, |
| 53 |
|
|
RealType &m2min, RealType &m2max, RealType *thrcof, int ndim, |
| 54 |
|
|
int &errflag); |
| 55 |
|
|
} |
| 56 |
|
|
|
| 57 |
|
|
#endif |