TABLE OF CONTENTS
ABINIT/m_Stat [ Modules ]
NAME
m_Stat
FUNCTION
FIXME: add description.
COPYRIGHT
Copyright (C) 2013-2022 ABINIT group (J. Bieder) This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
NOTES
SOURCE
22 #include "defs.h" 23 MODULE m_Stat 24 USE m_global 25 IMPLICIT NONE 26 27 PRIVATE 28 29 PUBLIC :: Stat_average 30 PUBLIC :: Stat_variance 31 PUBLIC :: Stat_coVariance 32 PUBLIC :: Stat_deviation 33 PUBLIC :: Stat_linearReg 34 PUBLIC :: Stat_powerReg 35 36 CONTAINS
ABINIT/m_Stat/Stat_linearReg [ Functions ]
NAME
Stat_linearReg
FUNCTION
FIXME: add description.
COPYRIGHT
Copyright (C) 2013-2022 ABINIT group (J. Bieder) This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
INPUTS
argin(sizein)=description
OUTPUT
argout(sizeout)=description
SIDE EFFECTS
NOTES
SOURCE
142 SUBROUTINE Stat_linearReg(tabX, tabY, a, b, R) 143 !Arguments ------------------------------------ 144 DOUBLE PRECISION, DIMENSION(:), INTENT(IN ) :: tabX 145 DOUBLE PRECISION, DIMENSION(:), INTENT(IN ) :: tabY 146 DOUBLE PRECISION , INTENT(OUT) :: a 147 DOUBLE PRECISION , INTENT(OUT) :: b 148 DOUBLE PRECISION , INTENT(OUT) :: R 149 DOUBLE PRECISION :: coVar 150 DOUBLE PRECISION :: Var 151 152 coVar = Stat_coVariance(tabX, tabY) 153 Var = Stat_variance(tabX) 154 a = coVar / var 155 b = Stat_average(tabY) - a* Stat_average(tabX) 156 R = ABS(a * SQRT(var) / Stat_deviation(tabY)) 157 END SUBROUTINE Stat_linearReg
ABINIT/m_Stat/Stat_powerReg [ Functions ]
NAME
Stat_powerReg
FUNCTION
FIXME: add description.
COPYRIGHT
Copyright (C) 2013-2022 ABINIT group (J. Bieder) This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
INPUTS
argin(sizein)=description
OUTPUT
argout(sizeout)=description
SIDE EFFECTS
NOTES
SOURCE
185 SUBROUTINE Stat_powerReg(tabX, tabY, a, b, R) 186 !Arguments ------------------------------------ 187 DOUBLE PRECISION, DIMENSION(:), INTENT(IN ) :: tabX 188 DOUBLE PRECISION, DIMENSION(:), INTENT(IN ) :: tabY 189 DOUBLE PRECISION , INTENT(OUT) :: a 190 DOUBLE PRECISION , INTENT(OUT) :: b 191 DOUBLE PRECISION , INTENT(OUT) :: R 192 INTEGER :: size1 193 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: tab1 194 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: tab2 195 INTEGER :: i 196 197 size1 = SIZE(tabX) 198 IF ( size1 .NE. SIZE(tabY) ) & 199 CALL ERROR("Stat_powerReg : Array sizes mismatch ") 200 201 FREEIF(tab1) 202 FREEIF(tab2) 203 MALLOC(tab1,(1:size1)) 204 MALLOC(tab2,(1:size1)) 205 206 207 ! IF ( ISNAN(a) .OR. ISNAN(b) ) THEN 208 DO i = 1, size1 209 tab1(i) = LOG(tabX(i)) 210 IF ( tabY(i) .NE. 0.d0 ) THEN 211 tab2(i) = LOG(tabY(i)) 212 ELSE 213 tab2(i) = LOG(1.d-16) 214 END IF 215 !WRITE(92,'(4E22.14)') tabX(i), tab1(i), tabY(i), tab2(i) 216 END DO 217 !WRITE(92,*) 218 !END IF 219 CALL Stat_linearReg(tab1, tab2, b, a, R) 220 a = EXP(a) 221 FREE(tab1) 222 FREE(tab2) 223 END SUBROUTINE Stat_powerReg