I recompiled CNS with the files provided in the HADDOCK2.2 distribution
I get the following error message:
cns < run1/protocols/generate_A.inp
%SETFPEPS increase value of MXFPEPS2 and recompile
%SETFPEPS error encountered: Could not determine machine epsilon
(CNS is in mode: SET ABORT=NORMal END)
ABORT mode will terminate program execution.
Program will stop immediately.
But if I adjust this param MXFPEPS2 in machvar.inc I get another error
cns_solve_1.3/intel-x86_64bit-linux/bin/cns < run1/protocols/generate_A.inp
%SETFPEPS Machine epsilon determined to be 0.494-323
%SETFPEPS error encountered: Machine epsilon value is too small
(CNS is in mode: SET ABORT=NORMal END)
Googling this error message you can find a number of possible solutions/causes.
It seems to be related to 32/64 bits and depending on the compiler you are using.
Various solutions have been proposed:
Removing -fast-math as a compiler option
Modify the machvar.f like this (line numbers on the left). The file should in the source folder 65 ONEP = DPTRUNC(ONE) + DPTRUNC(FPEPS) 66 ONEM = DPTRUNC(ONE) - DPTRUNC(FPEPS) 67 IF (ONE .EQ. ONEP .OR. ONE .EQ. ONEM) THEN 68 I = I - 1
Let us know what works for you and also which compiler/OS combination your are using
[ā¦snipā¦]
RTFRDR>! DNA-RNA-ALLATOM.TOP
RTFRDR>
RTFRDR>set message ? end eval ($old_message=$result) set echo ? end eval ($old_echo=$result)
MESSage=NORM
EVALUATE: symbol $OLD_MESSAGE set to āNORMā (string)
ECHO=TRUE {ON}
EVALUATE: symbol $OLD_ECHO set to TRUE (logical)
RTFRDR>set message=off echo=off end
%AUTOAN error encountered: exceeded MXRTP (RTF) parameter --> recompile program
(CNS is in mode: SET ABORT=NORMal END)
ABORT mode will terminate program execution.
Program will stop immediately.
I will try adjusting MXRTP but Iām a bit surprised. The system is not very large
(170aa)
if you fixed the problem, could you please let me know more in detail that how you fix same error as follows ?. how to remove the -fast-math as a compiler option ?.
Because i am getting same error. I am trying to compile with gcc and gfortan !
%SETFPEPS Machine epsilon determined to be 0.494-323
%SETFPEPS error encountered: Machine epsilon value is too small
(CNS is in mode: SET ABORT=NORMal END)
Thanking you !
I am using OS X EI Captain
version 10.11.3
Mac Pro (Early 2009)
could you please let me know that how to issue the command for Removing -fast-math as a compiler option ?. Because i am getting following error. while cns installation.
%SETFPEPS Machine epsilon determined to be 0.494-323
%SETFPEPS error encountered: Machine epsilon value is too small
Thanks you Dr. Alexandre Bonvin, , finally it is working after i did four modifications ! I hope it will be helpful to someone
first modification
set MXFPEPS2 value to 8192 in machvar.inc
second modification
removed flag -fastm in make file
third modification
MXRTP to 4000 in rtf.inc in the source directory
fourth modification
add the below line in the machvar.f
WRITE (6,ā(I6,E10.3,E10.3)ā) I, ONEP, ONEM
just above line 67, which looks like this:
IF (ONE .EQ. ONEP .OR. ONE .EQ. ONEM) THEN
What @eiso was dealing with is a problem of the number of parameters and the ādynamicā memory allocation of CNS.
What @srinivas_penumutchu found happens quite often in Mac OSX and for some reason is only solved with the solution you posted, which just adds a print statementā¦ This will add a bunch of unnecessary output to the CNS initialization headers thoughā¦ Would be great if someone with more FORTRAN skills could take a look at it!
C ==========================================================================
C
SUBROUTINE SETFPEPS
C
IMPLICIT NONE
C I/O
INCLUDE ānumbers.incā
INCLUDE āmachvar.incā
C
C Determine the machine epsilon i.e. the smallest FPEPS such that both
C 1+FPEPS and 1-FPEPS are different from 1.
C
C local
DOUBLE PRECISION ONEDP
DOUBLE COMPLEX DBCOMP
C
C external
C NONE
C
C begin
C
C ONEDP doesnāt really need to be defined - EPSILON() only needs to know
C the type
ONEDP=(1.00)
FPEPS = EPSILON(ONEDP)
DBCOMP = DCMPLX(ZERO,ZERO)
CALL DECLAR(āFP_EPSILONā, āDPā, ā ', DBCOMP, FPEPS)
RETURN
END