Changeset 337 for trunk/ADOL-C


Ignore:
Timestamp:
Aug 6, 2012 11:03:16 AM (8 years ago)
Author:
kulshres
Message:

Merge branch 'master' of 'gitclone' into svn

It may require some work for hessian patterns and advector to work
properly, since they were changed simultaneously by Andrea and I

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

The following commits were merged:

commit aeb288e939c7657aeaf75a8cbb833f9096ee2ce0
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Aug 6 16:46:20 2012 +0200

correct compilation error in message printing

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 0d6e681b19d116bf0aca1d918fb567aed49e1766
Author: Benjamin Letschert <letschi@…>
Date: Tue May 29 15:53:45 2012 +0200

for floor_op and ceil_op in INDO+TIGHT mode ind_dom should be set zero

commit 35689c69c49e02fb1b211e4f873851ce734c839e
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Fri May 4 16:34:49 2012 +0200

add a comment for clarification

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 710b93301d98610239f17dc40ba8cba6651f2ea5
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Fri May 4 14:21:49 2012 +0200

add copyright notices

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 830f2cc75ba823c2343f4a524eb3e90ab02bc278
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu May 3 13:59:32 2012 +0200

Use the block allocation and don't write all locations to tape

Now that we ensure block structure while allocating an advector
we don't need to write all locations to tape in order to do
subscripting operations. We can use arithmetic.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 8599c889e5cd684a7066600835df5f0c033eb339
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu May 3 13:57:39 2012 +0200

Allocate advector ensuring contiguous locations

use a dummy blocker to call the function before calling the vector
constructor. Also use the fill constructor since the initialise
constructor is experimental (for some reason) and a fill constructor
is called internally by gcc anyway. This way we won't have to ensure a
n+1 block and get holes.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit d62777e6070cf8b80b7b32616a874186e6463919
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu May 3 13:50:48 2012 +0200

Always put the last freed block to the front

This will make it efficienter if a block is deallocated right
one after the other. There will only be a search the first time
and all others will just work with the front of the list.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 33ae71a35fc04da062c4ba85659cbaf474caf1b8
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Fri Apr 27 17:36:41 2012 +0200

changes in StoreManagemerLocintBlock? to make it work right

add StoreManagerLocintBlock? to be the default StoreManager? in
tape_handling.cpp

All existing ADOL-C programs need to be tested again.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit af30b922ee0a267555fdcdfe66d0823aa98688be
Author: Benjamin Letschert <letschi@…>
Date: Fri Apr 27 13:09:56 2012 +0200

Adding new storem anagement StoreManagerLocintBlock? to storemanager.h
and to tape_handling.cpp

commit 7875317a03b08a2729879edfaec7ae5cd1363ef2
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Feb 29 08:49:25 2012 +0100

convert tape stats to size_t from uint

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 11e535ae503f5961d0c62336d6942c96e4b7c3ba
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu Jan 12 13:22:27 2012 +0100

Revert "add missing arguments to ext_fct calls"

This reverts commit 00622f92b5444e81f0c3760eeee0e14d4e8e4787.

This was temporary and wasn't supposed to be uploaded, some parts will
go into trunk.

commit 37ca7b37f3538153054dee40d3a75d560b3aa81f
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu Jan 12 13:21:13 2012 +0100

Revert "add safeguards and indo mode to ext_diff"

This reverts commit 507df83d988e3d64848eb0350369094b0b2ce742.

This was temporary for debugging and wasn't supposed to be uploaded

commit 507df83d988e3d64848eb0350369094b0b2ce742
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Sat Dec 31 23:46:23 2011 +0100

add safeguards and indo mode to ext_diff

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 00622f92b5444e81f0c3760eeee0e14d4e8e4787
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Sat Dec 31 00:47:17 2011 +0100

add missing arguments to ext_fct calls

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 1c1c7347867e583509716f7e2a8395875d0e3d53
Author: Benjamin Letschert <letschi@…>
Date: Fri Dec 16 14:18:24 2011 +0100

Bugfix in copy_index_domain

commit 69df20b8f0240e80515c7f0df456f124cef70cf8
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Dec 5 11:32:58 2011 +0100

shift around some code and add another constructor

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit b2c13089d4f5b45e7626e04c17b2f7bee08adc6a
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Nov 29 17:29:47 2011 +0100

const no more needed after last bugfix

add check for gradient w.r.t. rhs vector.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 78ea1e83eb17163fa0703e7b2b289659c4c6d42b
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Nov 28 17:13:23 2011 +0100

bugfix in reverse mode during ref_copyout

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 3a7c70061118c89ad66afeec45d957dbdaf002b3
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Nov 28 17:12:39 2011 +0100

Add one more assignment operator

this one is used when an adubref is copied into another adubref
as in from one advector to another advector, as this needs taping
however we don't need to override copy-constructor, because
construction can only be done when returning adubref.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 9c150d9aa825cf1e5964cd15c7d38b9a34984fce
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Fri Nov 25 12:49:14 2011 +0100

changed aTmp*TRES to (aTmp==0)?0:(aTmp*TRES) and similar occurences to avoid nans by 0*inf

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 0efabbcb41d8b17f0fe55a35ca63ba93913bccbe
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Fri Nov 25 12:32:36 2011 +0100

compile with -std=gnu99 to get both _GNU_SOURCE and _ISOC99_SOURCE

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 45fa79bd4d8ae0f4ef1e39b32f96271134e886f5
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Fri Nov 25 12:20:02 2011 +0100

cast result of trunc to avoid warnings

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit b97ae47a80f7c0034b8f29d14656f75abcd51b4d
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu Nov 24 17:53:11 2011 +0100

counting down with unsigned variables is dangerous

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 5dd6a95ce0403f9ac4b262a9546f86e95a5489ac
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu Nov 24 17:52:40 2011 +0100

reverse the order of indep vars and add reverse call

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 2d794980215e1ae41af0e3cc6ed8a5e97507a2f7
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu Nov 24 17:49:25 2011 +0100

Add functions to print L and R and compute scalar product

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 889d35f671f2d2eea4dda182b0d903746994fbcd
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Thu Nov 24 17:47:31 2011 +0100

bugfixes in luexam

use less adoubles, loop variables for constant sized loops should
remain inactive size_t. counting down with size_t is bad.

const-ness of advectors matters during active subscripting,
espacially when the lhs is a subscripted advector too, unless
there is a expression involving badouble on the rhs.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 0dadd11bf743e7283a26613c1503778c6997654a
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Nov 23 17:18:05 2011 +0100

tweak the example a bit

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 898afff0d43d86941125dd2e71857c619e3f28a4
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Nov 23 17:17:43 2011 +0100

If location buffer must contain n+2 free spaces

in case location buffer goes onto disk then check and write that
block before doing a subscript operation
if location buffer is smaller than n+2 then we cannot continue.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 1c2e4771972f0ce4db38bd959c23d18c061be568
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Nov 23 15:38:50 2011 +0100

one more cast

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 71b506ae55f8d6754f5c2a1f800220cb5a5bb974
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Nov 23 15:27:53 2011 +0100

Compilation fixes for sparse configuration

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 73334f20d51e707ee709a3602060aa3351dc6c29
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Nov 22 18:23:37 2011 +0100

add an example that uses advector with permutations

Lu factorization with pivoting is implemented here. The same traced
procedure can be used for different matrices that require different
pivots.

Zos_forward has been verified, WIP to verify derivatives.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit c54da9e8cd03e99d9362cc1a7eb551101b5a4cb8
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Nov 22 18:20:35 2011 +0100

some more inline helpers for advector

the destructor need not contain anything.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit d403b2d2b7e591db7c353c8c3ce551e7d6174df0
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Nov 22 18:19:58 2011 +0100

implement condassign for adubref

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 696e18b5dcf9534f7609243f085a508fba178b6c
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Nov 22 18:19:09 2011 +0100

bugfix in -= operator for adubref

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit b7dd8285c6fe8262d07d0a5393c15bcca7eeae96
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Nov 21 13:47:48 2011 +0100

implement reference operations in forward and reverse mode

the referenced location is recorded in the taylor buffer of the
reference variable, and read from the taylor buffer before any
operation is performed. The operations are then performed directly
on the referenced location.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit d546c517676a42065a98df782898f9e3472836b2
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Nov 21 13:45:49 2011 +0100

add new operations for the tape to work with references

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 07508c193f53c6c5912485dcb517ca7c67b75234
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Mon Nov 21 13:45:17 2011 +0100

Add a class to work as a reference to adouble and adub

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit e60d733c951a8a1d621a1401744fa03db78e9b92
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Mar 2 15:32:28 2011 +0100

introduce active subscript operation in forward and reverse

subscript operation as previously defined on advector was not quite
correct in case of computed index that changed while being evaluated
from tape. In this case we need the tape to record the subscript
operation so that the correct taylor and adjoint values are propagated
even if the index changed. This is especially true for index computation
via the lookupindex() function, where the index depends on the arguments
x and y which may change their values.

This active subscript is a copy_value operation not a copy_ref one.
So the result should not be used as an lvalue for any further operation.
In case the result is used as an lvalue the original entry in the
vector will not be altered, only the copied out version will be altered.

Also the safe mode of integer propagation for sparsity pattern
computation is not supported, only the tight mode is supported.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 5764beb91000483e02d4c6b52e67d177fff04a42
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Mar 2 13:59:12 2011 +0100

zeroing out the store is not necessary at all

and saves us some time by reducing memory access.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 29d3460e0c7a6d2839a25d8896c37fff98ad6a3c
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Wed Mar 2 13:57:33 2011 +0100

oplate.h is not needed after installation

so don't install it, and don't make it public api. it is totally
internal to ADOL-C itself.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit 0e3ac08ba9c6ac0aa7d3820def9e62e079a83e44
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Mar 1 16:00:17 2011 +0100

add missing include

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit b7364c7c2164981ce9e198b69f6aef8684388b43
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Mar 1 15:46:56 2011 +0100

Add new files to buildsystem.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

commit aaefbdef3a6e00792ce0c57acff67e4f4ee3224b
Author: Kshitij Kulshreshtha <kshitij@…>
Date: Tue Mar 1 15:38:59 2011 +0100

New class advector for index lookup and subscripting

This is a container using std::vector<adouble>. The subscripting
operations return references to adoubles, nothing needs to be written
onto the tape for this since the following operation using the adouble
reference will do the right thing.
The index lookup operation uses a sequence of n condassign_s ops which
are taped, and returns the index which matches the requirement as another
adouble.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

Location:
trunk/ADOL-C
Files:
44 edited

Legend:

Unmodified
Added
Removed
  • trunk/ADOL-C/Makefile.in

    r322 r337  
    146146LTLIBOBJS = @LTLIBOBJS@
    147147MAKEINFO = @MAKEINFO@
     148MANIFEST_TOOL = @MANIFEST_TOOL@
    148149MKDIR_P = @MKDIR_P@
    149150NM = @NM@
     
    175176ac_adolc_cxxflags = @ac_adolc_cxxflags@
    176177ac_aux_dir = @ac_aux_dir@
     178ac_ct_AR = @ac_ct_AR@
    177179ac_ct_CC = @ac_ct_CC@
    178180ac_ct_CXX = @ac_ct_CXX@
     
    208210localedir = @localedir@
    209211localstatedir = @localstatedir@
    210 lt_ECHO = @lt_ECHO@
    211212mandir = @mandir@
    212213mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/Makefile.am

    r171 r337  
    3636
    3737if DOCEXA
    38 noinst_PROGRAMS         = detexam speelpenning powexam odexam \
     38noinst_PROGRAMS         = detexam speelpenning powexam odexam luexam \
    3939                          tapeless_scalar tapeless_vector
    4040endif
     
    4848odexam_SOURCES          = odexam.cpp
    4949
     50luexam_SOURCES          = luexam.cpp
     51
    5052tapeless_scalar_SOURCES = tapeless_scalar.cpp
    5153
  • trunk/ADOL-C/examples/Makefile.in

    r322 r337  
    3939host_triplet = @host@
    4040@DOCEXA_TRUE@noinst_PROGRAMS = detexam$(EXEEXT) speelpenning$(EXEEXT) \
    41 @DOCEXA_TRUE@   powexam$(EXEEXT) odexam$(EXEEXT) \
     41@DOCEXA_TRUE@   powexam$(EXEEXT) odexam$(EXEEXT) luexam$(EXEEXT) \
    4242@DOCEXA_TRUE@   tapeless_scalar$(EXEEXT) tapeless_vector$(EXEEXT)
    4343subdir = ADOL-C/examples
     
    5959am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
    6060am__v_lt_0 = --silent
     61am_luexam_OBJECTS = luexam.$(OBJEXT)
     62luexam_OBJECTS = $(am_luexam_OBJECTS)
     63luexam_LDADD = $(LDADD)
     64luexam_DEPENDENCIES =
    6165am_odexam_OBJECTS = odexam.$(OBJEXT)
    6266odexam_OBJECTS = $(am_odexam_OBJECTS)
     
    105109am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
    106110am__v_GEN_0 = @echo "  GEN   " $@;
    107 SOURCES = $(detexam_SOURCES) $(odexam_SOURCES) $(powexam_SOURCES) \
    108         $(speelpenning_SOURCES) $(tapeless_scalar_SOURCES) \
    109         $(tapeless_vector_SOURCES)
    110 DIST_SOURCES = $(detexam_SOURCES) $(odexam_SOURCES) $(powexam_SOURCES) \
    111         $(speelpenning_SOURCES) $(tapeless_scalar_SOURCES) \
    112         $(tapeless_vector_SOURCES)
     111SOURCES = $(detexam_SOURCES) $(luexam_SOURCES) $(odexam_SOURCES) \
     112        $(powexam_SOURCES) $(speelpenning_SOURCES) \
     113        $(tapeless_scalar_SOURCES) $(tapeless_vector_SOURCES)
     114DIST_SOURCES = $(detexam_SOURCES) $(luexam_SOURCES) $(odexam_SOURCES) \
     115        $(powexam_SOURCES) $(speelpenning_SOURCES) \
     116        $(tapeless_scalar_SOURCES) $(tapeless_vector_SOURCES)
    113117RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
    114118        html-recursive info-recursive install-data-recursive \
     
    202206LTLIBOBJS = @LTLIBOBJS@
    203207MAKEINFO = @MAKEINFO@
     208MANIFEST_TOOL = @MANIFEST_TOOL@
    204209MKDIR_P = @MKDIR_P@
    205210NM = @NM@
     
    231236ac_adolc_cxxflags = @ac_adolc_cxxflags@
    232237ac_aux_dir = @ac_aux_dir@
     238ac_ct_AR = @ac_ct_AR@
    233239ac_ct_CC = @ac_ct_CC@
    234240ac_ct_CXX = @ac_ct_CXX@
     
    264270localedir = @localedir@
    265271localstatedir = @localstatedir@
    266 lt_ECHO = @lt_ECHO@
    267272mandir = @mandir@
    268273mkdir_p = @mkdir_p@
     
    298303powexam_SOURCES = powexam.cpp
    299304odexam_SOURCES = odexam.cpp
     305luexam_SOURCES = luexam.cpp
    300306tapeless_scalar_SOURCES = tapeless_scalar.cpp
    301307tapeless_vector_SOURCES = tapeless_vector.cpp
     
    346352        @rm -f detexam$(EXEEXT)
    347353        $(AM_V_CXXLD)$(CXXLINK) $(detexam_OBJECTS) $(detexam_LDADD) $(LIBS)
     354luexam$(EXEEXT): $(luexam_OBJECTS) $(luexam_DEPENDENCIES)
     355        @rm -f luexam$(EXEEXT)
     356        $(AM_V_CXXLD)$(CXXLINK) $(luexam_OBJECTS) $(luexam_LDADD) $(LIBS)
    348357odexam$(EXEEXT): $(odexam_OBJECTS) $(odexam_DEPENDENCIES)
    349358        @rm -f odexam$(EXEEXT)
     
    369378
    370379@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/detexam.Po@am__quote@
     380@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/luexam.Po@am__quote@
    371381@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/odexam.Po@am__quote@
    372382@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/powexam.Po@am__quote@
  • trunk/ADOL-C/examples/additional_examples/Makefile.in

    r322 r337  
    148148LTLIBOBJS = @LTLIBOBJS@
    149149MAKEINFO = @MAKEINFO@
     150MANIFEST_TOOL = @MANIFEST_TOOL@
    150151MKDIR_P = @MKDIR_P@
    151152NM = @NM@
     
    177178ac_adolc_cxxflags = @ac_adolc_cxxflags@
    178179ac_aux_dir = @ac_aux_dir@
     180ac_ct_AR = @ac_ct_AR@
    179181ac_ct_CC = @ac_ct_CC@
    180182ac_ct_CXX = @ac_ct_CXX@
     
    210212localedir = @localedir@
    211213localstatedir = @localstatedir@
    212 lt_ECHO = @lt_ECHO@
    213214mandir = @mandir@
    214215mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/checkpointing/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/clock/Makefile.in

    r322 r337  
    106106LTLIBOBJS = @LTLIBOBJS@
    107107MAKEINFO = @MAKEINFO@
     108MANIFEST_TOOL = @MANIFEST_TOOL@
    108109MKDIR_P = @MKDIR_P@
    109110NM = @NM@
     
    135136ac_adolc_cxxflags = @ac_adolc_cxxflags@
    136137ac_aux_dir = @ac_aux_dir@
     138ac_ct_AR = @ac_ct_AR@
    137139ac_ct_CC = @ac_ct_CC@
    138140ac_ct_CXX = @ac_ct_CXX@
     
    168170localedir = @localedir@
    169171localstatedir = @localstatedir@
    170 lt_ECHO = @lt_ECHO@
    171172mandir = @mandir@
    172173mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/detexam/Makefile.in

    r322 r337  
    142142LTLIBOBJS = @LTLIBOBJS@
    143143MAKEINFO = @MAKEINFO@
     144MANIFEST_TOOL = @MANIFEST_TOOL@
    144145MKDIR_P = @MKDIR_P@
    145146NM = @NM@
     
    171172ac_adolc_cxxflags = @ac_adolc_cxxflags@
    172173ac_aux_dir = @ac_aux_dir@
     174ac_ct_AR = @ac_ct_AR@
    173175ac_ct_CC = @ac_ct_CC@
    174176ac_ct_CXX = @ac_ct_CXX@
     
    204206localedir = @localedir@
    205207localstatedir = @localstatedir@
    206 lt_ECHO = @lt_ECHO@
    207208mandir = @mandir@
    208209mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/ext_diff_func/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/fixpoint_exam/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/helm/Makefile.in

    r322 r337  
    142142LTLIBOBJS = @LTLIBOBJS@
    143143MAKEINFO = @MAKEINFO@
     144MANIFEST_TOOL = @MANIFEST_TOOL@
    144145MKDIR_P = @MKDIR_P@
    145146NM = @NM@
     
    171172ac_adolc_cxxflags = @ac_adolc_cxxflags@
    172173ac_aux_dir = @ac_aux_dir@
     174ac_ct_AR = @ac_ct_AR@
    173175ac_ct_CC = @ac_ct_CC@
    174176ac_ct_CXX = @ac_ct_CXX@
     
    204206localedir = @localedir@
    205207localstatedir = @localstatedir@
    206 lt_ECHO = @lt_ECHO@
    207208mandir = @mandir@
    208209mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/hessmat/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/lighthouse/Makefile.in

    r322 r337  
    153153LTLIBOBJS = @LTLIBOBJS@
    154154MAKEINFO = @MAKEINFO@
     155MANIFEST_TOOL = @MANIFEST_TOOL@
    155156MKDIR_P = @MKDIR_P@
    156157NM = @NM@
     
    182183ac_adolc_cxxflags = @ac_adolc_cxxflags@
    183184ac_aux_dir = @ac_aux_dir@
     185ac_ct_AR = @ac_ct_AR@
    184186ac_ct_CC = @ac_ct_CC@
    185187ac_ct_CXX = @ac_ct_CXX@
     
    215217localedir = @localedir@
    216218localstatedir = @localstatedir@
    217 lt_ECHO = @lt_ECHO@
    218219mandir = @mandir@
    219220mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/lufact/Makefile.in

    r322 r337  
    142142LTLIBOBJS = @LTLIBOBJS@
    143143MAKEINFO = @MAKEINFO@
     144MANIFEST_TOOL = @MANIFEST_TOOL@
    144145MKDIR_P = @MKDIR_P@
    145146NM = @NM@
     
    171172ac_adolc_cxxflags = @ac_adolc_cxxflags@
    172173ac_aux_dir = @ac_aux_dir@
     174ac_ct_AR = @ac_ct_AR@
    173175ac_ct_CC = @ac_ct_CC@
    174176ac_ct_CXX = @ac_ct_CXX@
     
    204206localedir = @localedir@
    205207localstatedir = @localstatedir@
    206 lt_ECHO = @lt_ECHO@
    207208mandir = @mandir@
    208209mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/ode/Makefile.in

    r322 r337  
    150150LTLIBOBJS = @LTLIBOBJS@
    151151MAKEINFO = @MAKEINFO@
     152MANIFEST_TOOL = @MANIFEST_TOOL@
    152153MKDIR_P = @MKDIR_P@
    153154NM = @NM@
     
    179180ac_adolc_cxxflags = @ac_adolc_cxxflags@
    180181ac_aux_dir = @ac_aux_dir@
     182ac_ct_AR = @ac_ct_AR@
    181183ac_ct_CC = @ac_ct_CC@
    182184ac_ct_CXX = @ac_ct_CXX@
     
    212214localedir = @localedir@
    213215localstatedir = @localstatedir@
    214 lt_ECHO = @lt_ECHO@
    215216mandir = @mandir@
    216217mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/openmp_exam/Makefile.in

    r322 r337  
    142142LTLIBOBJS = @LTLIBOBJS@
    143143MAKEINFO = @MAKEINFO@
     144MANIFEST_TOOL = @MANIFEST_TOOL@
    144145MKDIR_P = @MKDIR_P@
    145146NM = @NM@
     
    171172ac_adolc_cxxflags = @ac_adolc_cxxflags@
    172173ac_aux_dir = @ac_aux_dir@
     174ac_ct_AR = @ac_ct_AR@
    173175ac_ct_CC = @ac_ct_CC@
    174176ac_ct_CXX = @ac_ct_CXX@
     
    204206localedir = @localedir@
    205207localstatedir = @localstatedir@
    206 lt_ECHO = @lt_ECHO@
    207208mandir = @mandir@
    208209mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/pow/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/scal/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/sparse/Makefile.in

    r322 r337  
    155155LTLIBOBJS = @LTLIBOBJS@
    156156MAKEINFO = @MAKEINFO@
     157MANIFEST_TOOL = @MANIFEST_TOOL@
    157158MKDIR_P = @MKDIR_P@
    158159NM = @NM@
     
    184185ac_adolc_cxxflags = @ac_adolc_cxxflags@
    185186ac_aux_dir = @ac_aux_dir@
     187ac_ct_AR = @ac_ct_AR@
    186188ac_ct_CC = @ac_ct_CC@
    187189ac_ct_CXX = @ac_ct_CXX@
     
    217219localedir = @localedir@
    218220localstatedir = @localstatedir@
    219 lt_ECHO = @lt_ECHO@
    220221mandir = @mandir@
    221222mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/speelpenning/Makefile.in

    r322 r337  
    138138LTLIBOBJS = @LTLIBOBJS@
    139139MAKEINFO = @MAKEINFO@
     140MANIFEST_TOOL = @MANIFEST_TOOL@
    140141MKDIR_P = @MKDIR_P@
    141142NM = @NM@
     
    167168ac_adolc_cxxflags = @ac_adolc_cxxflags@
    168169ac_aux_dir = @ac_aux_dir@
     170ac_ct_AR = @ac_ct_AR@
    169171ac_ct_CC = @ac_ct_CC@
    170172ac_ct_CXX = @ac_ct_CXX@
     
    200202localedir = @localedir@
    201203localstatedir = @localstatedir@
    202 lt_ECHO = @lt_ECHO@
    203204mandir = @mandir@
    204205mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/tapesave/Makefile.in

    r322 r337  
    142142LTLIBOBJS = @LTLIBOBJS@
    143143MAKEINFO = @MAKEINFO@
     144MANIFEST_TOOL = @MANIFEST_TOOL@
    144145MKDIR_P = @MKDIR_P@
    145146NM = @NM@
     
    171172ac_adolc_cxxflags = @ac_adolc_cxxflags@
    172173ac_aux_dir = @ac_aux_dir@
     174ac_ct_AR = @ac_ct_AR@
    173175ac_ct_CC = @ac_ct_CC@
    174176ac_ct_CXX = @ac_ct_CXX@
     
    204206localedir = @localedir@
    205207localstatedir = @localstatedir@
    206 lt_ECHO = @lt_ECHO@
    207208mandir = @mandir@
    208209mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/taylor/Makefile.in

    r322 r337  
    158158LTLIBOBJS = @LTLIBOBJS@
    159159MAKEINFO = @MAKEINFO@
     160MANIFEST_TOOL = @MANIFEST_TOOL@
    160161MKDIR_P = @MKDIR_P@
    161162NM = @NM@
     
    187188ac_adolc_cxxflags = @ac_adolc_cxxflags@
    188189ac_aux_dir = @ac_aux_dir@
     190ac_ct_AR = @ac_ct_AR@
    189191ac_ct_CC = @ac_ct_CC@
    190192ac_ct_CXX = @ac_ct_CXX@
     
    220222localedir = @localedir@
    221223localstatedir = @localstatedir@
    222 lt_ECHO = @lt_ECHO@
    223224mandir = @mandir@
    224225mkdir_p = @mkdir_p@
  • trunk/ADOL-C/examples/additional_examples/timing/Makefile.in

    r322 r337  
    228228LTLIBOBJS = @LTLIBOBJS@
    229229MAKEINFO = @MAKEINFO@
     230MANIFEST_TOOL = @MANIFEST_TOOL@
    230231MKDIR_P = @MKDIR_P@
    231232NM = @NM@
     
    257258ac_adolc_cxxflags = @ac_adolc_cxxflags@
    258259ac_aux_dir = @ac_aux_dir@
     260ac_ct_AR = @ac_ct_AR@
    259261ac_ct_CC = @ac_ct_CC@
    260262ac_ct_CXX = @ac_ct_CXX@
     
    290292localedir = @localedir@
    291293localstatedir = @localstatedir@
    292 lt_ECHO = @lt_ECHO@
    293294mandir = @mandir@
    294295mkdir_p = @mkdir_p@
  • trunk/ADOL-C/src/Makefile.am

    r272 r337  
    1212
    1313if SPARSE
    14 AM_CFLAGS            = @ac_adolc_cflags@ -DADOLC_INTERNAL=1 -DSPARSE=1
     14AM_CFLAGS            = @ac_adolc_cflags@ -DADOLC_INTERNAL=1 -DSPARSE=1 -std=gnu99
    1515AM_CXXFLAGS          = @ac_adolc_cxxflags@ -DADOLC_INTERNAL=1 -DSPARSE=1
    1616else
    17 AM_CFLAGS            = @ac_adolc_cflags@ -DADOLC_INTERNAL=1
     17AM_CFLAGS            = @ac_adolc_cflags@ -DADOLC_INTERNAL=1 -std=gnu99
    1818AM_CXXFLAGS          = @ac_adolc_cxxflags@ -DADOLC_INTERNAL=1
    1919endif
     
    3232
    3333EXTRA_DIST           = uni5_for.c fo_rev.c ho_rev.c \
    34                        taping_p.h malloc.h storemanager.h \
     34                       oplate.h taping_p.h malloc.h storemanager.h \
    3535                       externfcts_p.h checkpointing_p.h buffer_temp.h
    3636
    3737pkginclude_HEADERS   = adolc.h adalloc.h adouble.h adutils.h adutilsc.h \
    3838                       common.h convolut.h dvlparms.h fortutils.h\
    39                        interfaces.h oplate.h taping.h usrparms.h \
     39                       interfaces.h taping.h usrparms.h \
    4040                       externfcts.h checkpointing.h fixpoint.h\
    4141                       adolc_sparse.h adolc_openmp.h \
    42                        revolve.h
     42                       revolve.h advector.h
    4343
    4444lib_LTLIBRARIES      = libadolc.la
     
    6161                       indopro_forward_s.c indopro_forward_t.c \
    6262                       nonl_ind_forward_s.c nonl_ind_forward_t.c \
    63                        int_reverse_s.c int_reverse_t.c
     63                       int_reverse_s.c int_reverse_t.c advector.cpp
    6464
    6565libadolc_la_LIBADD   = drivers/libdrivers.la sparse/libsparse.la \
     
    7777                       forward_partx.c \
    7878                       externfcts.cpp checkpointing.cpp \
    79                        fixpoint.cpp fov_offset_forward.c revolve.c
     79                       fixpoint.cpp fov_offset_forward.c revolve.c advector.cpp
    8080
    8181libadolc_la_LIBADD   = drivers/libdrivers.la tapedoc/libtapedoc.la
  • trunk/ADOL-C/src/Makefile.in

    r322 r337  
    8484        fov_reverse.c hos_reverse.c hos_ov_reverse.c hov_reverse.c \
    8585        forward_partx.c externfcts.cpp checkpointing.cpp fixpoint.cpp \
    86         fov_offset_forward.c revolve.c taping_p.h int_forward_s.c \
    87         int_forward_t.c indopro_forward_s.c indopro_forward_t.c \
    88         nonl_ind_forward_s.c nonl_ind_forward_t.c int_reverse_s.c \
    89         int_reverse_t.c
     86        fov_offset_forward.c revolve.c advector.cpp taping_p.h \
     87        int_forward_s.c int_forward_t.c indopro_forward_s.c \
     88        indopro_forward_t.c nonl_ind_forward_s.c nonl_ind_forward_t.c \
     89        int_reverse_s.c int_reverse_t.c
    9090@SPARSE_FALSE@am_libadolc_la_OBJECTS = adalloc.lo malloc.lo adouble.lo \
    9191@SPARSE_FALSE@  convolut.lo fortutils.lo interfaces.lo \
     
    9696@SPARSE_FALSE@  hos_ov_reverse.lo hov_reverse.lo \
    9797@SPARSE_FALSE@  forward_partx.lo externfcts.lo checkpointing.lo \
    98 @SPARSE_FALSE@  fixpoint.lo fov_offset_forward.lo revolve.lo
     98@SPARSE_FALSE@  fixpoint.lo fov_offset_forward.lo revolve.lo \
     99@SPARSE_FALSE@  advector.lo
    99100@SPARSE_TRUE@am_libadolc_la_OBJECTS = adalloc.lo malloc.lo adouble.lo \
    100101@SPARSE_TRUE@   convolut.lo fortutils.lo interfaces.lo \
     
    109110@SPARSE_TRUE@   indopro_forward_t.lo nonl_ind_forward_s.lo \
    110111@SPARSE_TRUE@   nonl_ind_forward_t.lo int_reverse_s.lo \
    111 @SPARSE_TRUE@   int_reverse_t.lo
     112@SPARSE_TRUE@   int_reverse_t.lo advector.lo
    112113libadolc_la_OBJECTS = $(am_libadolc_la_OBJECTS)
    113114AM_V_lt = $(am__v_lt_$(V))
     
    253254LTLIBOBJS = @LTLIBOBJS@
    254255MAKEINFO = @MAKEINFO@
     256MANIFEST_TOOL = @MANIFEST_TOOL@
    255257MKDIR_P = @MKDIR_P@
    256258NM = @NM@
     
    282284ac_adolc_cxxflags = @ac_adolc_cxxflags@
    283285ac_aux_dir = @ac_aux_dir@
     286ac_ct_AR = @ac_ct_AR@
    284287ac_ct_CC = @ac_ct_CC@
    285288ac_ct_CXX = @ac_ct_CXX@
     
    315318localedir = @localedir@
    316319localstatedir = @localstatedir@
    317 lt_ECHO = @lt_ECHO@
    318320mandir = @mandir@
    319321mkdir_p = @mkdir_p@
     
    331333top_builddir = @top_builddir@
    332334top_srcdir = @top_srcdir@
    333 @SPARSE_FALSE@AM_CFLAGS = @ac_adolc_cflags@ -DADOLC_INTERNAL=1
    334 @SPARSE_TRUE@AM_CFLAGS = @ac_adolc_cflags@ -DADOLC_INTERNAL=1 -DSPARSE=1
     335@SPARSE_FALSE@AM_CFLAGS = @ac_adolc_cflags@ -DADOLC_INTERNAL=1 -std=gnu99
     336@SPARSE_TRUE@AM_CFLAGS = @ac_adolc_cflags@ -DADOLC_INTERNAL=1 -DSPARSE=1 -std=gnu99
    335337@SPARSE_FALSE@AM_CXXFLAGS = @ac_adolc_cxxflags@ -DADOLC_INTERNAL=1
    336338@SPARSE_TRUE@AM_CXXFLAGS = @ac_adolc_cxxflags@ -DADOLC_INTERNAL=1 -DSPARSE=1
     
    341343MAINTAINERCLEANFILES = Makefile.in *~ *.orig adolc_config.h config.h.in
    342344EXTRA_DIST = uni5_for.c fo_rev.c ho_rev.c \
    343                        taping_p.h malloc.h storemanager.h \
     345                       oplate.h taping_p.h malloc.h storemanager.h \
    344346                       externfcts_p.h checkpointing_p.h buffer_temp.h
    345347
    346348pkginclude_HEADERS = adolc.h adalloc.h adouble.h adutils.h adutilsc.h \
    347349                       common.h convolut.h dvlparms.h fortutils.h\
    348                        interfaces.h oplate.h taping.h usrparms.h \
     350                       interfaces.h taping.h usrparms.h \
    349351                       externfcts.h checkpointing.h fixpoint.h\
    350352                       adolc_sparse.h adolc_openmp.h \
    351                        revolve.h
     353                       revolve.h advector.h
    352354
    353355lib_LTLIBRARIES = libadolc.la
     
    364366@SPARSE_FALSE@                       forward_partx.c \
    365367@SPARSE_FALSE@                       externfcts.cpp checkpointing.cpp \
    366 @SPARSE_FALSE@                       fixpoint.cpp fov_offset_forward.c revolve.c
     368@SPARSE_FALSE@                       fixpoint.cpp fov_offset_forward.c revolve.c advector.cpp
    367369
    368370@SPARSE_TRUE@libadolc_la_SOURCES = adalloc.c malloc.c adouble.cpp \
     
    380382@SPARSE_TRUE@                       indopro_forward_s.c indopro_forward_t.c \
    381383@SPARSE_TRUE@                       nonl_ind_forward_s.c nonl_ind_forward_t.c \
    382 @SPARSE_TRUE@                       int_reverse_s.c int_reverse_t.c
     384@SPARSE_TRUE@                       int_reverse_s.c int_reverse_t.c advector.cpp
    383385
    384386@SPARSE_FALSE@libadolc_la_LIBADD = drivers/libdrivers.la tapedoc/libtapedoc.la
     
    480482@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adalloc.Plo@am__quote@
    481483@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adouble.Plo@am__quote@
     484@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/advector.Plo@am__quote@
    482485@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checkpointing.Plo@am__quote@
    483486@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convolut.Plo@am__quote@
  • trunk/ADOL-C/src/adouble.cpp

    r322 r337  
    1313 
    1414 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    15                Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
     15               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
     16               Kshitij Kulshreshtha
    1617 
    1718 This file is part of ADOL-C. This software is provided as open source.
     
    2223
    2324#include <adolc/adouble.h>
    24 #include <adolc/oplate.h>
     25#include "oplate.h"
    2526#include "taping_p.h"
    2627
     
    13401341    /* y+0.0 is a hack since condassign is currently not defined for
    13411342       badoubles */
    1342     condassign( sy,  y+0.0,  1.0 , -1.0 );
    1343     condassign( a1,  x+0.0, (adouble) atan(y/x),
    1344                 (adouble)( atan(y/x)+sy*2*pihalf));
    1345     condassign( a2,  (adouble) fabs(y), (adouble) (sy*pihalf-atan(x/y)),
    1346                 (adouble) 0.0 );
    1347     condassign( ret, (adouble) (fabs(x) - fabs(y)), a1, a2 );
     1343    condassign( sy,  y,  (adouble)1.0 , (adouble)-1.0 );
     1344    condassign( a1,  x,  atan(y/x),  atan(y/x)+sy*2*pihalf);
     1345    condassign( a2,  fabs(y), sy*pihalf-atan(x/y), (adouble) 0.0 );
     1346    condassign( ret, fabs(x) - fabs(y), a1, a2 );
    13481347    return ret;
    13491348}
     
    13821381    }
    13831382
    1384     condassign (ret, coval, exp(y*ADOLC_MATH_NSP::log(coval)),
    1385             ADOLC_MATH_NSP::pow(coval,y.getValue()) );
     1383    condassign (ret, (adouble) coval, exp(y*ADOLC_MATH_NSP::log(coval)),
     1384                (adouble) ADOLC_MATH_NSP::pow(coval,y.getValue()) );
    13861385
    13871386    return ret;
     
    14011400            fprintf(DIAG_OUT,"\nADOL-C message: negative exponent and zero basis deactivated\n");
    14021401    }
    1403     condassign(a1,-y, ADOLC_MATH_NSP::pow(vx,vy), pow(x,vy));
    1404     condassign(a2, fabs(x), pow(x, vy),a1);
    1405     condassign(ret,x+0.0, exp(y*log(x)),a2);
     1402    condassign(a1, -y, (adouble) ADOLC_MATH_NSP::pow(vx,vy), pow(x,vy));
     1403    condassign(a2, fabs(x), pow(x, vy), a1);
     1404    condassign(ret, x, exp(y*log(x)),a2);
    14061405
    14071406    return ret;
     
    17591758
    17601759/*--------------------------------------------------------------------------*/
    1761 void condassign( adouble &res,        const adouble &cond,
    1762                  const adouble &arg1, const adouble &arg2 ) {
     1760void condassign( adouble &res,         const badouble &cond,
     1761                 const badouble &arg1, const badouble &arg2 ) {
    17631762    ADOLC_OPENMP_THREAD_NUMBER;
    17641763    ADOLC_OPENMP_GET_THREAD_NUMBER;
     
    17841783
    17851784/*--------------------------------------------------------------------------*/
    1786 void condassign( adouble &res, const adouble &cond, const adouble &arg ) {
     1785void condassign( adouble &res, const badouble &cond, const badouble &arg ) {
    17871786    ADOLC_OPENMP_THREAD_NUMBER;
    17881787    ADOLC_OPENMP_GET_THREAD_NUMBER;
  • trunk/ADOL-C/src/adouble.h

    r320 r337  
    1010
    1111 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    12                Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
     12               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
     13               Kshitij Kulshreshtha
    1314 
    1415 This file is part of ADOL-C. This software is provided as open source.
     
    6061class adub;
    6162class badouble;
    62 class adubv;
    63 /* class doublev;  that's history */
    6463
    6564/*--------------------------------------------------------------------------*/
     
    8281*/
    8382class ADOLC_DLL_EXPORT badouble {
    84     friend ADOLC_DLL_EXPORT class badoublev;
    8583protected:
    8684    locint location;
     
    9088    //
    9189    // badouble( const badouble& a ) {location = a.location;};
    92     badouble( locint lo ) {
     90    explicit badouble( locint lo ) {
    9391        location = lo;
    9492    };
     
    112110    badouble& operator = ( const adub& );
    113111    double getValue() const;
    114     inline double value() {
     112    inline double value() const {
    115113        return getValue();
    116114    }
     
    230228    /*--------------------------------------------------------------------------*/
    231229    /* Conditionals */
    232     friend ADOLC_DLL_EXPORT void condassign( adouble &res, const adouble &cond,
    233             const adouble &arg1, const adouble &arg2 );
    234     friend ADOLC_DLL_EXPORT void condassign( adouble &res, const adouble &cond,
    235             const adouble &arg );
     230    friend ADOLC_DLL_EXPORT void condassign( adouble &res, const badouble &cond,
     231            const badouble &arg1, const badouble &arg2 );
     232    friend ADOLC_DLL_EXPORT void condassign( adouble &res, const badouble &cond,
     233            const badouble &arg );
    236234};
    237235
     
    251249class ADOLC_DLL_EXPORT adub:public badouble {
    252250    friend ADOLC_DLL_EXPORT class adouble;
     251    friend ADOLC_DLL_EXPORT class advector;
     252    friend ADOLC_DLL_EXPORT class adubref;
    253253#if GCC_VERSION >= 4003
    254254    adub( adub const &) {}
     
    261261        exit(-2);
    262262    };
    263     adub( double ):badouble(0) {
     263    explicit adub( double ):badouble(0) {
    264264        fprintf(DIAG_OUT,"ADOL-C error: illegal  construction of adub variable"
    265265                " from double\n");
     
    346346*/
    347347class ADOLC_DLL_EXPORT adouble:public badouble {
     348    friend ADOLC_DLL_EXPORT class advector;
    348349public:
    349350    adouble( const adub& );
  • trunk/ADOL-C/src/checkpointing.cpp

    r290 r337  
    1313---------------------------------------------------------------------------*/
    1414
    15 #include <adolc/oplate.h>
     15#include "oplate.h"
    1616#include <adolc/adalloc.h>
    1717#include "taping_p.h"
  • trunk/ADOL-C/src/drivers/Makefile.in

    r322 r337  
    162162LTLIBOBJS = @LTLIBOBJS@
    163163MAKEINFO = @MAKEINFO@
     164MANIFEST_TOOL = @MANIFEST_TOOL@
    164165MKDIR_P = @MKDIR_P@
    165166NM = @NM@
     
    191192ac_adolc_cxxflags = @ac_adolc_cxxflags@
    192193ac_aux_dir = @ac_aux_dir@
     194ac_ct_AR = @ac_ct_AR@
    193195ac_ct_CC = @ac_ct_CC@
    194196ac_ct_CXX = @ac_ct_CXX@
     
    224226localedir = @localedir@
    225227localstatedir = @localstatedir@
    226 lt_ECHO = @lt_ECHO@
    227228mandir = @mandir@
    228229mkdir_p = @mkdir_p@
  • trunk/ADOL-C/src/externfcts.cpp

    r197 r337  
    1717#include "taping_p.h"
    1818#include <adolc/adouble.h>
    19 #include <adolc/oplate.h>
     19#include "oplate.h"
    2020#include "buffer_temp.h"
    2121
  • trunk/ADOL-C/src/fo_rev.c

    r290 r337  
    1717
    1818 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    19                Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
    20  
     19               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
     20               Kshitij Kulshreshtha
     21
    2122 This file is part of ADOL-C. This software is provided as open source.
    2223 Any use, reproduction, or distribution of the software constitutes
     
    189190#include <adolc/interfaces.h>
    190191#include <adolc/adalloc.h>
    191 #include <adolc/oplate.h>
     192#include "oplate.h"
    192193#include "taping_p.h"
    193194#include <adolc/externfcts.h>
     
    16641665#endif /* !_NTIGHT_ */
    16651666                break;
     1667
     1668                /*--------------------------------------------------------------------------*/
     1669            case subscript:
     1670                {
     1671                    double val = get_val_r();
     1672                    size_t cnt, idx, numval = (size_t)trunc(fabs(val));
     1673                    locint vectorloc;
     1674                    vectorloc = get_locint_r();
     1675                    res = get_locint_r();
     1676                    arg = get_locint_r();
     1677#if !defined(_NTIGHT_)
     1678                    idx = (size_t)trunc(fabs(TARG));
     1679                    if (idx >= numval)
     1680                        fprintf(DIAG_OUT, "ADOL-C warning: index out of bounds while subscripting n=%z, idx=%z\n", numval, idx);
     1681                    arg1 = vectorloc+idx;
     1682                    ASSIGN_A( Aarg1, ADJOINT_BUFFER[arg1])
     1683                    ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1684                    FOR_0_LE_l_LT_p
     1685                    {
     1686#if defined(_INT_REV_)
     1687                        AARG1_INC |= ARES;
     1688                        ARES_INC = 0;
     1689#else
     1690                        AARG1_INC += ARES;
     1691                        ARES = 0.0;
     1692#endif
     1693                    }
     1694                    ADOLC_GET_TAYLOR(res);
     1695#else
     1696                    fprintf(DIAG_OUT, "ADOL-C error: active subscripting does not work in safe mode, please use tight mode\n");
     1697                    exit(-2);
     1698#endif /* !_NTIGHT_ */
     1699                }
     1700                break;
     1701
     1702            case subscript_ref:
     1703                {
     1704                    double val = get_val_r();
     1705                    size_t cnt, idx, numval = (size_t)trunc(fabs(val));
     1706                    locint vectorloc;
     1707                    vectorloc = get_locint_r();
     1708                    res = get_locint_r();
     1709                    arg = get_locint_r();
     1710#if !defined(_NTIGHT_)
     1711                    idx = (size_t)trunc(fabs(TARG));
     1712                    if (idx >= numval)
     1713                        fprintf(DIAG_OUT, "ADOL-C warning: index out of bounds while subscripting (ref) n=%z, idx=%z\n", numval, idx);
     1714                    arg1 = (size_t)trunc(fabs(TRES));
     1715                    // This is actually NOP
     1716                    // basically all we need is that arg1 == vectorloc+idx
     1717                    // so doing a check here is probably good
     1718                    if (arg1 != vectorloc+idx) {
     1719                        fprintf(DIAG_OUT, "ADOL-C error: indexed active position does not match referenced position\nindexed = %d, referenced = %d\n", vectorloc+idx, arg1);
     1720                        exit(-2);
     1721                    }
     1722                    ADOLC_GET_TAYLOR(res);
     1723#else
     1724                    fprintf(DIAG_OUT, "ADOL-C error: active subscripting does not work in safe mode, please use tight mode\n");
     1725                    exit(-2);
     1726#endif /* !_NTIGHT_ */
     1727                }
     1728                break;
     1729
     1730            case ref_copyout:
     1731                res = get_locint_r();
     1732                arg1 = get_locint_r();
     1733#if !defined(_NTIGHT_)
     1734                arg = (size_t)trunc(fabs(TARG1));
     1735                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1736                ASSIGN_A( Aarg, ADJOINT_BUFFER[arg])
     1737               
     1738                FOR_0_LE_l_LT_p
     1739                {
     1740#if defined(_INT_REV_)                 
     1741                  AARG_INC |= ARES;
     1742                  ARES_INC = 0;
     1743#else
     1744                  AARG_INC += ARES;
     1745                  ARES_INC = 0.0;
     1746#endif
     1747                }
     1748                ADOLC_GET_TAYLOR(res);
     1749#else
     1750                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1751                exit(-2);
     1752#endif
     1753                break;
     1754
     1755
     1756            case ref_incr_a:                        /* Increment an adouble    incr_a */
     1757            case ref_decr_a:                        /* Increment an adouble    decr_a */
     1758                arg1   = get_locint_r();
     1759
     1760#if !defined(_NTIGHT_)
     1761                res = (size_t)trunc(fabs(TARG1));
     1762                ADOLC_GET_TAYLOR(res);
     1763#else
     1764                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1765                exit(-2);
     1766#endif /* !_NTIGHT_ */
     1767                break;
     1768
     1769            case ref_assign_d:            /* assign an adouble variable a    assign_d */
     1770                /* double value. (=) */
     1771                arg1   = get_locint_r();
     1772#if !defined(_NTIGHT_)
     1773                res = (size_t)trunc(fabs(TARG1));
     1774                coval = get_val_r();
     1775
     1776                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1777
     1778                FOR_0_LE_l_LT_p
     1779#if defined(_INT_REV_)                 
     1780                ARES_INC = 0;
     1781#else
     1782                ARES_INC = 0.0;
     1783#endif
     1784
     1785                ADOLC_GET_TAYLOR(res);
     1786#else
     1787                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1788                exit(-2);
     1789#endif /* !_NTIGHT_ */
     1790                break;
     1791
     1792            case ref_assign_d_zero:  /* assign an adouble variable a    assign_d_zero */
     1793            case ref_assign_d_one:   /* double value (0 or 1). (=)       assign_d_one */
     1794                arg1 = get_locint_r();
     1795
     1796#if !defined(_NTIGHT_)
     1797                res = (size_t)trunc(fabs(TARG1));
     1798
     1799                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1800
     1801                FOR_0_LE_l_LT_p
     1802#if defined(_INT_REV_)                 
     1803                ARES_INC = 0;
     1804#else
     1805                ARES_INC = 0.0;
     1806#endif
     1807                ADOLC_GET_TAYLOR(res);
     1808#else
     1809                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1810                exit(-2);
     1811#endif /* !_NTIGHT_ */
     1812                break;
     1813
     1814            case ref_assign_a:           /* assign an adouble variable an    assign_a */
     1815                /* adouble value. (=) */
     1816                arg1 = get_locint_r();
     1817                arg = get_locint_r();
     1818
     1819#if !defined(_NTIGHT_)
     1820                res = (size_t)trunc(fabs(TARG1));
     1821
     1822                ASSIGN_A( Aarg, ADJOINT_BUFFER[arg])
     1823                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1824
     1825                FOR_0_LE_l_LT_p
     1826                {
     1827#if defined(_INT_REV_)                 
     1828                  AARG_INC |= ARES;
     1829                  ARES_INC = 0;
     1830#else
     1831                  AARG_INC += ARES;
     1832                  ARES_INC = 0.0;
     1833#endif
     1834                }
     1835
     1836                ADOLC_GET_TAYLOR(res);
     1837#else
     1838                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1839                exit(-2);
     1840#endif /* !_NTIGHT_ */
     1841                break;
     1842
     1843            case ref_assign_ind:       /* assign an adouble variable an    assign_ind */
     1844                /* independent double value (<<=) */
     1845                arg1 = get_locint_r();
     1846
     1847#if !defined(_NTIGHT_)
     1848                res = (size_t)trunc(fabs(TARG1));
     1849
     1850                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1851
     1852                FOR_0_LE_l_LT_p
     1853                    RESULTS(l,indexi) = ARES_INC;
     1854
     1855                ADOLC_GET_TAYLOR(res);
     1856#else
     1857                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1858                exit(-2);
     1859#endif /* !_NTIGHT_ */
     1860                indexi--;
     1861                break;
     1862
     1863            case ref_eq_plus_d:            /* Add a floating point to an    eq_plus_d */
     1864                /* adouble. (+=) */
     1865                arg1   = get_locint_r();
     1866#if !defined(_NTIGHT_)
     1867                res = (size_t)trunc(fabs(TARG1));
     1868                coval = get_val_r();
     1869
     1870                ADOLC_GET_TAYLOR(res);
     1871#else
     1872                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1873                exit(-2);
     1874#endif /* !_NTIGHT_ */
     1875                break;
     1876
     1877            case ref_eq_plus_a:             /* Add an adouble to another    eq_plus_a */
     1878                /* adouble. (+=) */
     1879                arg1 = get_locint_r();
     1880                arg = get_locint_r();
     1881
     1882#if !defined(_NTIGHT_)
     1883                res = (size_t)trunc(fabs(TARG1));
     1884
     1885                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1886                ASSIGN_A( Aarg, ADJOINT_BUFFER[arg]);
     1887
     1888                FOR_0_LE_l_LT_p
     1889#if defined(_INT_REV_)
     1890                AARG_INC |= ARES_INC;
     1891#else
     1892                AARG_INC += ARES_INC;
     1893#endif
     1894
     1895                ADOLC_GET_TAYLOR(res);
     1896#else
     1897                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1898                exit(-2);
     1899#endif /* !_NTIGHT_ */
     1900                break;
     1901
     1902            case ref_eq_min_d:       /* Subtract a floating point from an    eq_min_d */
     1903                /* adouble. (-=) */
     1904                arg1   = get_locint_r();
     1905#if !defined(_NTIGHT_)
     1906                res = (size_t)trunc(fabs(TARG1));
     1907                coval = get_val_r();
     1908
     1909                ADOLC_GET_TAYLOR(res);
     1910#else
     1911                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1912                exit(-2);
     1913#endif /* !_NTIGHT_ */
     1914               break;
     1915
     1916            case ref_eq_min_a:        /* Subtract an adouble from another    eq_min_a */
     1917                /* adouble. (-=) */
     1918                arg1 = get_locint_r();
     1919                arg = get_locint_r();
     1920
     1921#if !defined(_NTIGHT_)
     1922                res = (size_t)trunc(fabs(TARG1));
     1923                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1924                ASSIGN_A( Aarg, ADJOINT_BUFFER[arg])
     1925
     1926                FOR_0_LE_l_LT_p
     1927#if defined(_INT_REV_)
     1928                AARG_INC |= ARES_INC;
     1929#else
     1930                AARG_INC -= ARES_INC;
     1931#endif
     1932
     1933               ADOLC_GET_TAYLOR(res);
     1934#else
     1935                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1936                exit(-2);
     1937#endif /* !_NTIGHT_ */
     1938                break;
     1939
     1940            case ref_eq_mult_d:              /* Multiply an adouble by a    eq_mult_d */
     1941                /* flaoting point. (*=) */
     1942                arg1   = get_locint_r();
     1943#if !defined(_NTIGHT_)
     1944                res = (size_t)trunc(fabs(TARG1));
     1945                coval = get_val_r();
     1946
     1947#if !defined(_INT_REV_)
     1948                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1949
     1950                FOR_0_LE_l_LT_p
     1951                ARES_INC *= coval;
     1952#endif
     1953
     1954                ADOLC_GET_TAYLOR(res);
     1955#else
     1956                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1957                exit(-2);
     1958#endif /* !_NTIGHT_ */
     1959                break;
     1960
     1961            case ref_eq_mult_a:       /* Multiply one adouble by another    eq_mult_a */
     1962                /* (*=) */
     1963                arg1 = get_locint_r();
     1964                arg = get_locint_r();
     1965
     1966#if !defined(_NTIGHT_)
     1967                res = (size_t)trunc(fabs(TARG1));
     1968                ADOLC_GET_TAYLOR(res);
     1969
     1970                ASSIGN_A( Ares, ADJOINT_BUFFER[res])
     1971                ASSIGN_A( Aarg, ADJOINT_BUFFER[arg])
     1972
     1973                FOR_0_LE_l_LT_p
     1974#if defined(_INT_REV_)
     1975                AARG_INC |= ARES_INC;
     1976#else
     1977                { aTmp = ARES;
     1978                  /* olvo 980713 nn: ARES = 0.0; */
     1979                    ARES_INC =  (aTmp==0)?0:(aTmp * TARG);
     1980                    AARG_INC += (aTmp==0)?0:(aTmp * TRES);
     1981                }
     1982#endif     
     1983#else
     1984                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     1985                exit(-2);
     1986#endif /* !_NTIGHT_ */
     1987                break;
     1988
     1989        case ref_cond_assign:                                      /* cond_assign */
     1990           {
     1991                locint ref    = get_locint_r();
     1992                arg2   = get_locint_r();
     1993                arg1   = get_locint_r();
     1994                arg    = get_locint_r();
     1995#if !defined(_NTIGHT_)
     1996                coval  = get_val_r();
     1997                res = (size_t)trunc(fabs(rp_T[ref]));
     1998
     1999                ADOLC_GET_TAYLOR(res);
     2000
     2001                ASSIGN_A( Aarg1, ADJOINT_BUFFER[arg1])
     2002                ASSIGN_A( Ares,  ADJOINT_BUFFER[res])
     2003                ASSIGN_A( Aarg2, ADJOINT_BUFFER[arg2])
     2004
     2005                /* olvo 980924 changed code a little bit */
     2006                if (TARG > 0.0) {
     2007                    if (res != arg1)
     2008                        FOR_0_LE_l_LT_p
     2009                        { if ((coval <= 0.0) && (ARES))
     2010                          MINDEC(ret_c,2);
     2011#if defined(_INT_REV_)
     2012                              AARG1_INC |= ARES;
     2013                              ARES_INC = 0;
     2014#else
     2015                          AARG1_INC += ARES;
     2016                          ARES_INC = 0.0;
     2017#endif
     2018                        } else
     2019                            FOR_0_LE_l_LT_p
     2020                            if ((coval <= 0.0) && (ARES_INC))
     2021                                    MINDEC(ret_c,2);
     2022                } else {
     2023                    if (res != arg2)
     2024                        FOR_0_LE_l_LT_p
     2025                        { if ((coval <= 0.0) && (ARES))
     2026                          MINDEC(ret_c,2);
     2027#if defined(_INT_REV_)
     2028                          AARG2_INC |= ARES;
     2029                          ARES_INC = 0;
     2030#else
     2031                          AARG2_INC += ARES;
     2032                          ARES_INC = 0.0;
     2033#endif
     2034                        } else
     2035                            FOR_0_LE_l_LT_p
     2036                            if ((coval <= 0.0) && (ARES_INC))
     2037                                    MINDEC(ret_c,2);
     2038                }
     2039#else
     2040                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     2041                exit(-2);
     2042#endif /* !_NTIGHT_ */
     2043                }
     2044                break;
     2045
     2046            case ref_cond_assign_s:                                  /* cond_assign_s */
     2047                arg2   = get_locint_r();
     2048                arg1  = get_locint_r();
     2049                arg   = get_locint_r();
     2050#if !defined(_NTIGHT_)
     2051                coval = get_val_r();
     2052                res = (size_t)trunc(fabs(TARG2));
     2053                ADOLC_GET_TAYLOR(res);
     2054
     2055                ASSIGN_A( Aarg1, ADJOINT_BUFFER[arg1])
     2056                ASSIGN_A( Ares,  ADJOINT_BUFFER[res])
     2057
     2058                /* olvo 980924 changed code a little bit */
     2059                if (TARG > 0.0) {
     2060                    if (res != arg1)
     2061                        FOR_0_LE_l_LT_p
     2062                        { if ((coval <= 0.0) && (ARES))
     2063                          MINDEC(ret_c,2);
     2064#if defined(_INT_REV_)
     2065                          AARG1_INC |= ARES;
     2066                          ARES_INC = 0.0;
     2067#else
     2068                          AARG1_INC += ARES;
     2069                          ARES_INC = 0.0;
     2070#endif
     2071                        } else
     2072                            FOR_0_LE_l_LT_p
     2073                            if ((coval <= 0.0) && (ARES_INC))
     2074                                    MINDEC(ret_c,2);
     2075                } else
     2076                    if (TARG == 0.0) /* we are at the tie */
     2077                        FOR_0_LE_l_LT_p
     2078                        if (ARES_INC)
     2079                            MINDEC(ret_c,0);
     2080#else
     2081                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     2082                exit(-2);
     2083#endif /* !_NTIGHT_ */
     2084                break;
     2085
    16662086
    16672087                /****************************************************************************/
  • trunk/ADOL-C/src/ho_rev.c

    r249 r337  
    1212 
    1313 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    14                Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
    15  
     14               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
     15               Kshitij Kulshreshtha
     16
    1617 This file is part of ADOL-C. This software is provided as open source.
    1718 Any use, reproduction, or distribution of the software constitutes
     
    267268#include <adolc/interfaces.h>
    268269#include <adolc/adalloc.h>
    269 #include <adolc/oplate.h>
     270#include "oplate.h"
    270271#include "taping_p.h"
    271272#include <adolc/convolut.h>
     
    20402041            break;
    20412042
     2043                /*--------------------------------------------------------------------------*/
     2044            case subscript:
     2045                coval = get_val_r();
     2046                {
     2047                    size_t cnt, idx, numval = (size_t)trunc(fabs(coval));
     2048                    locint vectorloc;
     2049                    vectorloc = get_locint_r();
     2050                    res = get_locint_r();
     2051                    arg = get_locint_r();
     2052                    ASSIGN_T(Targ, rpp_T[arg])
     2053                    idx = (size_t)trunc(fabs(TARG));
     2054                    if (idx >= numval)
     2055                        fprintf(DIAG_OUT, "ADOL-C warning: index out of bounds while subscripting n=%z, idx=%z\n", numval, idx);
     2056                    arg1 = vectorloc+idx;
     2057                    ASSIGN_A(Aarg1, rpp_A[arg1])
     2058                    ASSIGN_A(Ares, rpp_A[res])
     2059
     2060                    FOR_0_LE_l_LT_p
     2061                    if (0 == ARES) {
     2062                        HOV_INC(Aarg1, k1)
     2063                        HOV_INC(Ares, k1)
     2064                    } else {
     2065                        MAXDEC(AARG1,ARES);
     2066                        AARG1_INC_O;
     2067                        ARES_INC = 0.0;
     2068                        FOR_0_LE_i_LT_k
     2069                        {
     2070                            AARG1_INC += ARES;
     2071                            ARES_INC = 0.0;
     2072                        }
     2073                    }
     2074                    GET_TAYL(res,k,p)
     2075                }
     2076                break;
     2077
     2078            case subscript_ref:
     2079                coval = get_val_r();
     2080                {
     2081                    size_t cnt, idx, numval = (size_t)trunc(fabs(coval));
     2082                    locint vectorloc;
     2083                    vectorloc = get_locint_r();
     2084                    res = get_locint_r();
     2085                    arg = get_locint_r();
     2086                    ASSIGN_T(Targ, rpp_T[arg])
     2087                    ASSIGN_T(Tres, rpp_T[res])
     2088                    idx = (size_t)trunc(fabs(TARG));
     2089                    if (idx >= numval)
     2090                        fprintf(DIAG_OUT, "ADOL-C warning: index out of bounds while subscripting (ref) n=%z, idx=%z\n", numval, idx);
     2091                    arg1 = (size_t)trunc(fabs(TRES));
     2092                    // This is actually NOP
     2093                    // basically all we need is that arg1 == vectorloc[idx]
     2094                    // so doing a check here is probably good
     2095                    if (arg1 != vectorloc+idx) {
     2096                        fprintf(DIAG_OUT, "ADOL-C error: indexed active position does not match referenced position\nindexed = %d, referenced = %d\n", vectorloc+idx, arg1);
     2097                        exit(-2);
     2098                    }
     2099                    GET_TAYL(res,k,p)
     2100                }
     2101                break;
     2102
     2103            case ref_copyout:
     2104                res = get_locint_r();
     2105                arg1 = get_locint_r();
     2106
     2107                ASSIGN_T(Targ1, rpp_T[arg1])
     2108                arg = (size_t)trunc(fabs(TARG1));
     2109
     2110                ASSIGN_A(Ares, rpp_A[res])
     2111                ASSIGN_A(Aarg, rpp_A[arg])
     2112
     2113                FOR_0_LE_l_LT_p
     2114                if (0 == ARES) {
     2115                    HOV_INC(Aarg, k1)
     2116                    HOV_INC(Ares, k1)
     2117                } else {
     2118                    MAXDEC(AARG,ARES);
     2119                    AARG_INC_O;
     2120                    ARES_INC = 0.0;
     2121                    FOR_0_LE_i_LT_k
     2122                    {
     2123                        AARG_INC += ARES;
     2124                        ARES_INC = 0.0;
     2125                    }
     2126                }
     2127                GET_TAYL(res,k,p)
     2128                break;
     2129
     2130            case ref_incr_a:                        /* Increment an adouble    incr_a */
     2131            case ref_decr_a:                        /* Increment an adouble    decr_a */
     2132                arg1   = get_locint_r();
     2133
     2134                ASSIGN_T(Targ1, rpp_T[arg1])
     2135                res = (size_t)trunc(fabs(TARG1));
     2136
     2137                GET_TAYL(res,k,p)
     2138                break;
     2139
     2140            case ref_assign_d:      /* assign an adouble variable a    assign_d */
     2141                /* double value. (=) */
     2142                coval = get_val_r();
     2143                // fallthrough
     2144            case ref_assign_d_zero: /* assign an adouble a        assign_d_zero */
     2145            case ref_assign_d_one:  /* double value. (=)           assign_d_one */
     2146                arg1   = get_locint_r();
     2147
     2148                ASSIGN_T(Targ1, rpp_T[arg1])
     2149                res = (size_t)trunc(fabs(TARG1));
     2150
     2151                ASSIGN_A(Ares, rpp_A[res])
     2152
     2153                FOR_0_LE_l_LT_pk1
     2154                ARES_INC = 0.0;
     2155
     2156                GET_TAYL(res,k,p)
     2157                break;
     2158
     2159            case ref_assign_a:     /* assign an adouble variable an    assign_a */
     2160                /* adouble value. (=) */
     2161                arg1 = get_locint_r();
     2162                arg = get_locint_r();
     2163
     2164                ASSIGN_T(Targ1, rpp_T[arg1])
     2165                res = (size_t)trunc(fabs(TARG1));
     2166
     2167                ASSIGN_A(Aarg, rpp_A[arg])
     2168                ASSIGN_A(Ares, rpp_A[res])
     2169
     2170                FOR_0_LE_l_LT_p
     2171                if  (0 == ARES) {
     2172                    HOV_INC(Aarg, k1)
     2173                    HOV_INC(Ares, k1)
     2174                } else {
     2175                    MAXDEC(AARG,ARES);
     2176                    AARG_INC_O;
     2177                    ARES_INC = 0.0;
     2178                    FOR_0_LE_i_LT_k
     2179                    { /* ! no tempory */
     2180                        AARG_INC += ARES;
     2181                        ARES_INC = 0.0;
     2182                    }
     2183                }
     2184
     2185                GET_TAYL(res,k,p)
     2186                break;
     2187
     2188            case ref_assign_ind:       /* assign an adouble variable an    assign_ind */
     2189                /* independent double value (<<=) */
     2190                arg1 = get_locint_r();
     2191                ASSIGN_T(Targ1, rpp_T[arg1])
     2192                res = (size_t)trunc(fabs(TARG1));
     2193                ASSIGN_A(Ares, rpp_A[res])
     2194
     2195                FOR_0_LE_l_LT_p
     2196                {
     2197#ifdef _HOV_
     2198                    if (nonzero) /* ??? question: why here? */
     2199                    nonzero[l][indexi] = (int)ARES;
     2200#endif /* _HOV_ */
     2201                    ARES_INC_O;
     2202                    FOR_0_LE_i_LT_k
     2203                        RESULTS(l,indexi,i) = ARES_INC;
     2204                }
     2205
     2206                GET_TAYL(res,k,p)
     2207                    indexi--;
     2208                break;
     2209
     2210        case ref_eq_plus_d:            /* Add a floating point to an    eq_plus_d */
     2211            /* adouble. (+=) */
     2212                arg1   = get_locint_r();
     2213                ASSIGN_T(Targ1, rpp_T[arg1])
     2214                res = (size_t)trunc(fabs(TARG1));
     2215                coval = get_val_r();
     2216
     2217                GET_TAYL(res,k,p)
     2218                break;
     2219
     2220            case ref_eq_plus_a:             /* Add an adouble to another    eq_plus_a */
     2221                /* adouble. (+=) */
     2222                arg1 = get_locint_r();
     2223                arg = get_locint_r();
     2224
     2225                ASSIGN_T(Targ1, rpp_T[arg1])
     2226                res = (size_t)trunc(fabs(TARG1));
     2227                ASSIGN_A(Ares, rpp_A[res])
     2228                ASSIGN_A(Aarg, rpp_A[arg])
     2229
     2230                FOR_0_LE_l_LT_p
     2231                if  (0 == ARES) {
     2232                    HOV_INC(Ares, k1)
     2233                    HOV_INC(Aarg, k1)
     2234                } else {
     2235                    MAXDEC(AARG,ARES);
     2236                    AARG_INC_O;
     2237                    ARES_INC_O;
     2238                    FOR_0_LE_i_LT_k
     2239                    AARG_INC += ARES_INC;
     2240                }
     2241
     2242                GET_TAYL(res,k,p)
     2243                break;
     2244
     2245            case ref_eq_min_d:       /* Subtract a floating point from an    eq_min_d */
     2246                /* adouble. (-=) */
     2247                arg1   = get_locint_r();
     2248                ASSIGN_T(Targ1, rpp_T[arg1])
     2249                res = (size_t)trunc(fabs(TARG1));
     2250                coval = get_val_r();
     2251
     2252                GET_TAYL(res,k,p)
     2253                break;
     2254
     2255            case ref_eq_min_a:        /* Subtract an adouble from another    eq_min_a */
     2256                /* adouble. (-=) */
     2257                arg1 = get_locint_r();
     2258                arg = get_locint_r();
     2259               
     2260                ASSIGN_T(Targ1, rpp_T[arg1])
     2261                res = (size_t)trunc(fabs(TARG1));
     2262                ASSIGN_A(Ares, rpp_A[res])
     2263                ASSIGN_A(Aarg, rpp_A[arg])
     2264
     2265                FOR_0_LE_l_LT_p
     2266                if  (0==ARES) {
     2267                    HOV_INC(Ares, k1)
     2268                    HOV_INC(Aarg, k1)
     2269                } else {
     2270                    MAXDEC(AARG,ARES);
     2271                    AARG_INC_O;
     2272                    ARES_INC_O;
     2273                    FOR_0_LE_i_LT_k
     2274                    AARG_INC -= ARES_INC;
     2275                }
     2276
     2277                GET_TAYL(res,k,p)
     2278                break;
     2279
     2280            case ref_eq_mult_d:              /* Multiply an adouble by a    eq_mult_d */
     2281                /* flaoting point. (*=) */
     2282                arg1   = get_locint_r();
     2283                ASSIGN_T(Targ1, rpp_T[arg1])
     2284                res = (size_t)trunc(fabs(TARG1));
     2285                coval = get_val_r();
     2286
     2287                ASSIGN_A(Ares, rpp_A[res])
     2288
     2289                FOR_0_LE_l_LT_p
     2290                if ( 0 == ARES_INC )
     2291                    HOV_INC(Ares, k)
     2292                    else
     2293                        FOR_0_LE_i_LT_k
     2294                        ARES_INC *= coval;
     2295
     2296                GET_TAYL(res,k,p)
     2297                break;
     2298
     2299        case ref_eq_mult_a:       /* Multiply one adouble by another    eq_mult_a */
     2300                /* (*=) */
     2301                arg1 = get_locint_r();
     2302                arg = get_locint_r();
     2303                ASSIGN_T(Targ1, rpp_T[arg1])
     2304                res = (size_t)trunc(fabs(TARG1));
     2305
     2306                GET_TAYL(res,k,p)
     2307
     2308                ASSIGN_A(Ares, rpp_A[res])
     2309                ASSIGN_A(Aarg, rpp_A[arg])
     2310                ASSIGN_A(Aqo,  rp_Atemp)
     2311                ASSIGN_T(Tres, rpp_T[res])
     2312                ASSIGN_T(Targ, rpp_T[arg])
     2313
     2314                FOR_0_LE_l_LT_p {
     2315                    if (0 == ARES) {
     2316                    HOV_INC(Aarg, k1)
     2317                        HOV_INC(Ares, k1)
     2318                    } else {
     2319                        MAXDEC(ARES,2.0);
     2320                        MAXDEC(AARG,ARES);
     2321                        AARG_INC_O;
     2322                        ARES_INC_O;
     2323                        conv(k,Ares,Targ,rp_Atemp);
     2324                        if(arg != res) {
     2325                            inconv(k,Ares,Tres,Aarg);
     2326                            FOR_0_LE_i_LT_k
     2327                            ARES_INC = AQO_INC;
     2328                        } else
     2329                            FOR_0_LE_i_LT_k
     2330                            ARES_INC = 2.0 * AQO_INC;
     2331                        HOV_INC(Aarg,k)
     2332                        HOS_OV_INC(Tres,k)
     2333                        HOS_OV_INC(Targ,k)
     2334                        HOS_OV_ASSIGN_A(Aqo,  rp_Atemp)
     2335                    }
     2336            }
     2337                break;
     2338
     2339            case ref_cond_assign:                                      /* cond_assign */
     2340            {   
     2341                revreal *Tref;
     2342                locint ref   = get_locint_r();
     2343                arg2  = get_locint_r();
     2344                arg1  = get_locint_r();
     2345                arg   = get_locint_r();
     2346                coval = get_val_r();
     2347               
     2348                ASSIGN_T(Tref, rpp_T[ref])
     2349
     2350#ifdef _HIGHER_ORDER_
     2351#define TREF  *Tref
     2352#else
     2353#define TREF   rpp_T[ref]
     2354#endif   
     2355
     2356                res = (size_t)trunc(fabs(TREF));
     2357#undef TREF
     2358                GET_TAYL(res,k,p)
     2359
     2360                ASSIGN_A(Aarg1, rpp_A[arg1])
     2361                ASSIGN_A(Ares,  rpp_A[res])
     2362                ASSIGN_A(Aarg2, rpp_A[arg2])
     2363                ASSIGN_T(Targ,  rpp_T[arg])
     2364
     2365                /* olvo 980925 changed code a little bit */
     2366                if (TARG > 0.0) {
     2367                    if (res != arg1)
     2368                        FOR_0_LE_l_LT_p
     2369                        { if (0 == ARES) {
     2370                          HOV_INC(Ares,  k1)
     2371                              HOV_INC(Aarg1, k1)
     2372                          } else {
     2373                              if (coval <= 0.0)
     2374                                  MINDEC(ret_c,2);
     2375                              MAXDEC(AARG1,ARES);
     2376                              ARES_INC = 0.0;
     2377                              AARG1_INC_O;
     2378                              FOR_0_LE_i_LT_k
     2379                              { AARG1_INC += ARES;
     2380                                ARES_INC = 0;
     2381                              }
     2382                          }
     2383                    }
     2384                    else
     2385                        FOR_0_LE_l_LT_p {
     2386                            if ((coval <= 0.0) && (ARES))
     2387                            MINDEC(ret_c,2);
     2388                            HOV_INC(Ares,  k1)
     2389                        }
     2390                    } else /* TARG <= 0.0 */
     2391            {
     2392                if (res != arg2)
     2393                        FOR_0_LE_l_LT_p
     2394                        { if (0 == ARES) {
     2395                          HOV_INC(Ares,  k1)
     2396                              HOV_INC(Aarg2, k1)
     2397                          } else {
     2398                              if (TARG == 0.0) /* we are at the tie */
     2399                              { MINDEC(ret_c,0);
     2400                                  AARG1 = 5.0;
     2401                                  AARG2_INC = 5.0;
     2402                              } else {
     2403                                  if (coval <= 0.0)
     2404                                      MINDEC(ret_c,2);
     2405                                  MAXDEC(AARG2,ARES);
     2406                                  AARG2_INC_O;
     2407                              }
     2408                              ARES_INC = 0.0;
     2409
     2410                              FOR_0_LE_i_LT_k
     2411                              { AARG2_INC += ARES;
     2412                                ARES_INC = 0;
     2413                              }
     2414                          }
     2415                      HOV_INC(Aarg1, k1)
     2416                    } else
     2417                        FOR_0_LE_l_LT_p {
     2418                            if (ARES) {
     2419                            if (TARG == 0.0) /* we are at the tie */
     2420                                { MINDEC(ret_c,0);
     2421                                    AARG1 = 5.0;
     2422                                    AARG2 = 5.0;
     2423                                } else
     2424                                    if (coval <= 0.0)
     2425                                        MINDEC(ret_c,2);
     2426                            }
     2427                        HOV_INC(Ares,  k1)
     2428                        HOV_INC(Aarg1, k1)
     2429                        HOV_INC(Aarg2, k1)
     2430                    }
     2431                }
     2432            }
     2433                break;
     2434
     2435            case ref_cond_assign_s:                                  /* cond_assign_s */
     2436                arg2   = get_locint_r();
     2437                arg1  = get_locint_r();
     2438                arg   = get_locint_r();
     2439                coval = get_val_r();
     2440               
     2441                ASSIGN_T(Targ2, rpp_T[arg2])
     2442                res = (size_t)trunc(fabs(TARG2));
     2443
     2444                GET_TAYL(res,k,p)
     2445
     2446                ASSIGN_A(Aarg1, rpp_A[arg1])
     2447                ASSIGN_A(Ares,  rpp_A[res])
     2448                ASSIGN_T(Targ,  rpp_T[arg])
     2449
     2450                /* olvo 980925 changed code a little bit */
     2451                if (TARG == 0.0) /* we are at the tie */
     2452                { FOR_0_LE_l_LT_p
     2453                    { if  (ARES)
     2454                      AARG1 = 5.0;
     2455                      HOV_INC(Aarg1, k1)
     2456                      HOV_INC(Ares,  k1)
     2457                    }
     2458                    MINDEC(ret_c,0);
     2459                } else
     2460                    if (TARG > 0.0) {
     2461                        if (res != arg1)
     2462                            FOR_0_LE_l_LT_p
     2463                            { if  (0 == ARES) {
     2464                              HOV_INC(Ares,  k1)
     2465                                  HOV_INC(Aarg1, k1)
     2466                              } else {
     2467                                  if (coval <= 0.0)
     2468                                      MINDEC(ret_c,2);
     2469                                  MAXDEC(AARG1,ARES);
     2470                                  ARES_INC = 0.0;
     2471                                  AARG1_INC_O;
     2472                                  FOR_0_LE_i_LT_k
     2473                                  { (AARG1_INC) += ARES;
     2474                                    ARES_INC = 0;
     2475                                  }
     2476                              }
     2477                        }
     2478                        else
     2479                            FOR_0_LE_l_LT_p {
     2480                                if ((coval <= 0.0) && (ARES))
     2481                                MINDEC(ret_c,2);
     2482                                HOV_INC(Ares,  k1)
     2483                            }
     2484                        }
     2485            break;
     2486
    20422487                /****************************************************************************/
    20432488                /*                                                          REMAINING STUFF */
  • trunk/ADOL-C/src/oplate.h

    r106 r337  
    66 
    77 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    8                Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
     8               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
     9               Kshitij Kulshreshtha
    910 
    1011 This file is part of ADOL-C. This software is provided as open source.
     
    1617#if !defined(ADOLC_OPLATE_P_H)
    1718#define ADOLC_OPLATE_P_H 1
    18 
    19 #include <adolc/common.h>
    2019
    2120/****************************************************************************/
     
    8382  floor_op,
    8483  ext_diff,
    85   ignore_me
     84  ignore_me,
     85  subscript = 80,
     86  subscript_ref,
     87  ref_assign_d_zero,
     88  ref_assign_d_one,
     89  ref_assign_d,
     90  ref_assign_a,
     91  ref_assign_ind,
     92  ref_incr_a,
     93  ref_decr_a,
     94  ref_eq_plus_d,
     95  ref_eq_min_d,
     96  ref_eq_plus_a,
     97  ref_eq_min_a,
     98  ref_eq_mult_d,
     99  ref_eq_mult_a,
     100  ref_copyout,
     101  ref_cond_assign,
     102  ref_cond_assign_s
    86103};
    87104
  • trunk/ADOL-C/src/sparse/Makefile.in

    r322 r337  
    161161LTLIBOBJS = @LTLIBOBJS@
    162162MAKEINFO = @MAKEINFO@
     163MANIFEST_TOOL = @MANIFEST_TOOL@
    163164MKDIR_P = @MKDIR_P@
    164165NM = @NM@
     
    190191ac_adolc_cxxflags = @ac_adolc_cxxflags@
    191192ac_aux_dir = @ac_aux_dir@
     193ac_ct_AR = @ac_ct_AR@
    192194ac_ct_CC = @ac_ct_CC@
    193195ac_ct_CXX = @ac_ct_CXX@
     
    223225localedir = @localedir@
    224226localstatedir = @localstatedir@
    225 lt_ECHO = @lt_ECHO@
    226227mandir = @mandir@
    227228mkdir_p = @mkdir_p@
  • trunk/ADOL-C/src/sparse/sparsedrivers.cpp

    r331 r337  
    1313----------------------------------------------------------------------------*/
    1414#include <adolc/sparse/sparsedrivers.h>
    15 #include <adolc/oplate.h>
     15#include "oplate.h"
    1616#include <adolc/adalloc.h>
    1717#include <adolc/interfaces.h>
  • trunk/ADOL-C/src/storemanager.h

    r267 r337  
    99
    1010 Copyright (c) 2006 Johannes Willkomm <johannes.willkomm@rwth-aachen.de>
    11  Written by Johannes Willkomm <johannes.willkomm@rwth-aachen.de>
    12  
     11               2011-2012 Kshitij Kulshreshtha <kshitij@math.upb.de>
     12               2012 Benjamin Letschert <letschi@mail.upb.de>
     13
    1314 This file is part of ADOL-C.
    1415
     
    3536
    3637
     38 3) Have a look a class StoreManagerLocintBlock. This class uses a list of
     39    of free blocks of different sizes instead of free locations.
    3740
    3841 class StoreManagerInSitu
     
    5255
    5356 History:
     57          20120427 bl:     add blocking store management
    5458          20110208 kk:     incorporated in ADOL-C; moved some code arround
    5559          20060507 jw:     begin
     
    6165
    6266#include <adolc/common.h>
     67#include <list>
    6368
    6469class StoreManager {
     
    7075  virtual locint next_loc() = 0;
    7176  virtual void free_loc(locint) = 0;
     77  virtual void ensure_block(size_t n) = 0;
    7278
    7379//   // effectively the current size of the store array
     
    105111  virtual locint next_loc();
    106112  virtual void free_loc(locint loc);
     113  virtual void ensure_block(size_t n) {}
     114};
     115
     116class StoreManagerLocintBlock : public StoreManager {
     117protected:
     118    double * &storePtr;
     119    struct FeldBlock {
     120        locint next; // next location
     121        size_t size; // number of following free locations
     122        FeldBlock(): next(0), size(0) {}
     123        FeldBlock(const struct FeldBlock &block) :
     124            next(block.next),size(block.size) {}
     125    };
     126
     127    list<struct FeldBlock> indexFeld;
     128    size_t &groesse;
     129    size_t &anzahl;
     130private:
     131    void grow( );
     132public:
     133    StoreManagerLocintBlock(double * &storePtr, size_t &size, size_t &numlives);
     134    StoreManagerLocintBlock(const StoreManagerLocintBlock *const stm, double * &storePtr, size_t &size, size_t &numLives);
     135
     136    virtual ~StoreManagerLocintBlock();
     137    virtual inline size_t size() const { return anzahl; }
     138
     139    virtual inline size_t maxSize() const { return groesse; }
     140
     141    virtual locint next_loc();
     142    virtual void free_loc(locint loc);
     143    virtual void ensure_block(size_t n);
    107144};
    108145
  • trunk/ADOL-C/src/tape_handling.cpp

    r295 r337  
    55 Contents: management of tape infos
    66
    7  Copyright (c) Andreas Kowarz, Andrea Walther
    8  
     7 Copyright (c) Andreas Kowarz, Andrea Walther, Kshitij Kulshreshtha,
     8               Benjamin Letschert
     9
    910 This file is part of ADOL-C. This software is provided as open source.
    1011 Any use, reproduction, or distribution of the software constitutes
     
    4344  storeSize = 0;
    4445  numLives = 1;
    45   storeManagerPtr = new StoreManagerLocint(store, storeSize, numLives);
     46  storeManagerPtr = new StoreManagerLocintBlock(store, storeSize, numLives);
    4647}
    4748
     
    6970    memcpy(store, gtv.store, storeSize*sizeof(double));
    7071    storeManagerPtr = new
    71         StoreManagerLocint(
    72             dynamic_cast<StoreManagerLocint*>(gtv.storeManagerPtr),
     72        StoreManagerLocintBlock(
     73            dynamic_cast<StoreManagerLocintBlock*>(gtv.storeManagerPtr),
    7374            store, storeSize, numLives);
    7475    return *this;
     
    170171    storePtr = new double[groesse];
    171172    indexFeld = new locint[groesse];
    172     memset(storePtr, 0, groesse*sizeof(double));
    173173    // we use index 0 as end-of-list marker
    174174    size_t i = 1;
     
    11001100                    ADOLC_GLOBAL_TAPE_VARS.storeSize * sizeof(double));
    11011101            ADOLC_GLOBAL_TAPE_VARS.storeManagerPtr = new
    1102                 StoreManagerLocint(
    1103                     dynamic_cast<StoreManagerLocint*>(globalTapeVars_s->storeManagerPtr),
     1102                StoreManagerLocintBlock(
     1103                    dynamic_cast<StoreManagerLocintBlock*>(globalTapeVars_s->storeManagerPtr),
    11041104                    ADOLC_GLOBAL_TAPE_VARS.store,
    11051105                    ADOLC_GLOBAL_TAPE_VARS.storeSize,
     
    11801180}
    11811181
     1182StoreManagerLocintBlock::StoreManagerLocintBlock(double * &storePtr, size_t &size, size_t &numlives) :
     1183    storePtr(storePtr),
     1184    groesse(size), anzahl(numlives)
     1185{
     1186    indexFeld.clear();
     1187#ifdef ADOLC_DEBUG
     1188    std::cerr << "StoreManagerIntegerBlock::StoreManagerIntegerBlock()\n";
     1189#endif
     1190}
     1191
     1192StoreManagerLocintBlock::~StoreManagerLocintBlock()
     1193{
     1194#ifdef ADOLC_DEBUG
     1195    std::cerr << "StoreManagerIntegerBlock::~StoreManagerIntegerBlock()\n";
     1196#endif
     1197    if (storePtr) {
     1198     delete[] storePtr;
     1199     storePtr = 0;
     1200    }
     1201    if (indexFeld.size() ) {
     1202        indexFeld.clear();
     1203    }
     1204    groesse = 0;
     1205    anzahl = 0;
     1206}
     1207
     1208StoreManagerLocintBlock::StoreManagerLocintBlock(
     1209    const StoreManagerLocintBlock *const stm,
     1210    double * &storePtr, size_t &size, size_t &numlives) :
     1211    storePtr(storePtr),
     1212    groesse(size), anzahl(numlives)
     1213{
     1214#ifdef ADOLC_DEBUG
     1215    std::cerr << "StoreManagerInteger::StoreManagerInteger()\n";
     1216#endif
     1217    indexFeld.clear();
     1218    list<struct FeldBlock>::const_iterator iter = stm->indexFeld.begin();
     1219    for (; iter != stm->indexFeld.end(); iter++)
     1220        indexFeld.push_back( *iter );
     1221}
     1222
     1223
     1224locint StoreManagerLocintBlock::next_loc() {
     1225    if ( indexFeld.size()==0 )
     1226        grow();
     1227
     1228    locint const result = indexFeld.front().next;
     1229    indexFeld.front().next++;
     1230    indexFeld.front().size--;
     1231
     1232    if (indexFeld.front().size == 0)
     1233          indexFeld.pop_front();
     1234
     1235    ++anzahl;
     1236
     1237#ifdef ADOLC_DEBUG
     1238     std::cerr  << "next_loc() , anzahl= " <<anzahl << ", groesse= "<< groesse << endl;
     1239    list<struct FeldBlock>::iterator iter = indexFeld.begin();
     1240    for( ; iter != indexFeld.end(); iter++ )
     1241       std::cerr << "INDEXFELD ( " << iter->next << " , " << iter->size << ")" << endl;
     1242    std::cerr << "next_loc: " << result << " fill: " << size() << "max: " << maxSize() << endl;
     1243#endif
     1244    return result;
     1245}
     1246
     1247void StoreManagerLocintBlock::ensure_block(size_t n) {
     1248    bool grown = false;
     1249
     1250    if ( indexFeld.size()==0 ) {
     1251#ifdef ADOLC_DEBUG
     1252        std::cerr << "no free blocks...growing " << endl;
     1253#endif
     1254        grow();
     1255        grown = true;
     1256    }
     1257
     1258    while (indexFeld.front().size < n) {
     1259        if (grown && indexFeld.back().size >= n) {
     1260#ifdef ADOLC_DEBUG
     1261            std::cerr << "bringing back to front " << endl;
     1262#endif
     1263            struct FeldBlock tmp(indexFeld.back());
     1264            indexFeld.pop_back();
     1265            indexFeld.push_front(tmp);
     1266        }
     1267        else if (grown && indexFeld.back().size < n) {
     1268#ifdef ADOLC_DEBUG
     1269            std::cerr << "still not enough...growing " << endl;
     1270#endif
     1271            grow();
     1272        }
     1273        else {
     1274#ifdef ADOLC_DEBUG
     1275            std::cerr << "searching for big enough block " << endl;
     1276#endif
     1277            bool found = false;
     1278            list<struct FeldBlock>::iterator iter = indexFeld.begin();
     1279            for (; iter != indexFeld.end() ; iter++ ) {
     1280                if ( iter->size >= n) {
     1281                    if (iter != indexFeld.begin() ) {
     1282                        struct FeldBlock tmp(*iter);
     1283                        iter = indexFeld.erase(iter);
     1284                        indexFeld.push_front(tmp);
     1285                    }
     1286                    found = true;
     1287                    break;
     1288                }
     1289            }
     1290            if (!found) {
     1291#ifdef ADOLC_DEBUG
     1292                std::cerr << "no big enough block...growing " << endl;
     1293#endif
     1294                grow();
     1295                grown = true;
     1296            }
     1297        }
     1298    }
     1299
     1300#ifdef ADOLC_DEBUG
     1301    std::cerr << "ensure_Block: " << " fill: " << size() << "max: " << maxSize() << endl;
     1302    std::cerr << "ensure_Block (" << n << ")" << endl;
     1303    list<struct FeldBlock>::iterator iter = indexFeld.begin();
     1304    for( ; iter != indexFeld.end(); iter++ )
     1305       std::cerr << "INDEXFELD ( " << iter->next << " , " << iter->size << ")" << endl;
     1306#endif
     1307}
     1308
     1309void StoreManagerLocintBlock::grow() {
     1310    if (groesse == 0){
     1311        groesse += initialeGroesse;
     1312        struct FeldBlock tmp;
     1313        tmp.next = 0;
     1314        tmp.size = groesse;
     1315        indexFeld.push_back(tmp);
     1316    }
     1317
     1318    size_t const alteGroesse = groesse;
     1319    groesse *= 2;
     1320
     1321    if (groesse > std::numeric_limits<locint>::max()) {
     1322      // encapsulate this error message
     1323      fprintf(DIAG_OUT,"\nADOL-C error:\n");
     1324      fprintf(DIAG_OUT,"maximal number (%d) of live active variables exceeded\n\n",
     1325           std::numeric_limits<locint>::max());
     1326      exit(-3);
     1327    }
     1328
     1329#ifdef ADOLC_DEBUG
     1330    // index 0 is not used, means one slot less
     1331    std::cerr << "StoreManagerIntegerBlock::grow(): increase size from " << alteGroesse
     1332      << " to " << groesse << " entries (currently " << size() << " entries used)\n";
     1333#endif
     1334
     1335    double *const oldStore = storePtr;
     1336
     1337#if defined(ADOLC_DEBUG)
     1338    std::cerr << "StoreManagerInteger::grow(): allocate " << groesse * sizeof(double) << " B doubles "
     1339      << "and " << groesse * sizeof(struct FeldBlock) << " B LinkBlocks\n";
     1340#endif
     1341    storePtr = new double[groesse];
     1342    memset(storePtr, 0, groesse*sizeof(double));
     1343    size_t i = 0;
     1344
     1345    if (alteGroesse != initialeGroesse) { // not the first time
     1346#if defined(ADOLC_DEBUG)
     1347      std::cerr << "StoreManagerInteger::grow(): copy values\n";
     1348#endif
     1349      for (size_t j = i; j < alteGroesse; ++j) {
     1350          storePtr[j] = oldStore[j];
     1351      }
     1352
     1353#if defined(ADOLC_DEBUG)
     1354      std::cerr << "StoreManagerInteger::grow(): free " << alteGroesse * sizeof(double)
     1355          << " + " << alteGroesse * sizeof(struct FeldBlock) << " B\n";
     1356#endif
     1357      delete [] oldStore;
     1358    }
     1359    list<struct FeldBlock>::iterator iter = indexFeld.begin();
     1360    for (; iter != indexFeld.end() ; iter++ ) {
     1361         if (iter->next + iter->size == alteGroesse ) {
     1362              iter->size += alteGroesse;
     1363              // move the block to the end of the list because that is where
     1364              // other functions expect the newly grown block to be
     1365              struct FeldBlock tmp(*iter);
     1366              iter = indexFeld.erase(iter);
     1367              indexFeld.push_back(tmp);
     1368              break;
     1369         }
     1370    }
     1371    if (iter == indexFeld.end()) {
     1372         struct FeldBlock tmp;
     1373         tmp.next = alteGroesse;
     1374         tmp.size = alteGroesse;
     1375         indexFeld.push_back(tmp);
     1376    }
     1377#ifdef ADOLC_DEBUG
     1378    std::cerr << "Growing:" << endl;
     1379    iter = indexFeld.begin();
     1380    for( ; iter != indexFeld.end(); iter++ )
     1381       std::cerr << "INDEXFELD ( " << iter->next << " , " << iter->size << ")" << endl;
     1382#endif
     1383}
     1384
     1385void StoreManagerLocintBlock::free_loc(locint loc) {
     1386    assert( loc < groesse);
     1387
     1388    list<struct FeldBlock>::iterator iter = indexFeld.begin();
     1389    for (; iter != indexFeld.end() ; iter++ ) {
     1390         if (loc+1 == iter->next || iter->next + iter->size == loc) {
     1391              iter->size++;
     1392              if (loc + 1 == iter->next)
     1393                   iter->next = loc;
     1394    // bringing the matched element to the front maybe a good idea
     1395    // in case several contiguous adouble are deallcated right after
     1396    // one another, e.g. advector
     1397              struct FeldBlock tmp(*iter);
     1398              iter = indexFeld.erase(iter);
     1399              indexFeld.push_front(tmp);
     1400              iter = indexFeld.begin();
     1401              break;
     1402         }
     1403    }
     1404    if (iter == indexFeld.end()) {
     1405         struct FeldBlock tmp;
     1406         tmp.next = loc;
     1407         tmp.size = 1;
     1408         indexFeld.push_front(tmp);
     1409    }
     1410
     1411    --anzahl;
     1412#ifdef ADOLC_DEBUG
     1413    std::cerr << "free_loc: " << loc << " fill: " << size() << "max: " << maxSize() << endl;
     1414
     1415    iter = indexFeld.begin();
     1416    for( ; iter != indexFeld.end(); iter++ )
     1417       std::cerr << "INDEXFELD ( " << iter->next << " , " << iter->size << ")" << endl;
     1418#endif
     1419}
     1420
     1421void ensureContiguousLocations(size_t n) {
     1422    ADOLC_OPENMP_THREAD_NUMBER;
     1423    ADOLC_OPENMP_GET_THREAD_NUMBER;
     1424    ADOLC_GLOBAL_TAPE_VARS.storeManagerPtr->ensure_block(n);
     1425}
  • trunk/ADOL-C/src/tapedoc/Makefile.in

    r322 r337  
    161161LTLIBOBJS = @LTLIBOBJS@
    162162MAKEINFO = @MAKEINFO@
     163MANIFEST_TOOL = @MANIFEST_TOOL@
    163164MKDIR_P = @MKDIR_P@
    164165NM = @NM@
     
    190191ac_adolc_cxxflags = @ac_adolc_cxxflags@
    191192ac_aux_dir = @ac_aux_dir@
     193ac_ct_AR = @ac_ct_AR@
    192194ac_ct_CC = @ac_ct_CC@
    193195ac_ct_CXX = @ac_ct_CXX@
     
    223225localedir = @localedir@
    224226localstatedir = @localstatedir@
    225 lt_ECHO = @lt_ECHO@
    226227mandir = @mandir@
    227228mkdir_p = @mkdir_p@
  • trunk/ADOL-C/src/tapedoc/tapedoc.c

    r320 r337  
    1616
    1717#include <adolc/tapedoc/tapedoc.h>
    18 #include <adolc/oplate.h>
     18#include "oplate.h"
    1919#include "taping_p.h"
    2020#include <adolc/adalloc.h>
  • trunk/ADOL-C/src/taping.c

    r295 r337  
    77
    88 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    9                Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
     9               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
     10               Kshitij Kulshreshtha
    1011 
    1112 This file is part of ADOL-C. This software is provided as open source.
     
    1819#include <string.h>
    1920
    20 #include <adolc/oplate.h>
     21#include "oplate.h"
    2122#include "taping_p.h"
    2223
  • trunk/ADOL-C/src/taping.h

    r294 r337  
    5757ADOLC_DLL_EXPORT void disableBranchSwitchWarnings();
    5858
     59ADOLC_DLL_EXPORT void ensureContiguousLocations(size_t n);
     60
    5961END_C_DECLS
    6062
  • trunk/ADOL-C/src/uni5_for.c

    r336 r337  
    2121 Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
    2222               Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel,
    23                Benjamin Letschert
     23               Benjamin Letschert, Kshitij Kulshreshtha
     24               
    2425
    2526 This file is part of ADOL-C. This software is provided as open source.
     
    3334#include <adolc/taping.h>
    3435#include "taping_p.h"
    35 #include <adolc/oplate.h>
     36#include "oplate.h"
    3637#include <adolc/externfcts.h>
    3738#include "externfcts_p.h"
     
    36233624#if defined(_INDO_)
    36243625#if defined(_INDOPRO_)
     3626#ifdef _TIGHT_
     3627                ind_dom[res][0] = 0;
     3628#else
    36253629                copy_index_domain(res, arg, ind_dom);
     3630#endif /* _TIGHT_ */
    36263631#endif
    36273632#if defined(_NONLIND_)
     
    36553660#if defined(_INDO_)
    36563661#if defined(_INDOPRO_)
     3662#ifdef _TIGHT_
     3663                ind_dom[res][0] = 0;
     3664#else
    36573665                copy_index_domain(res, arg, ind_dom);
     3666#endif /* _TIGHT_ */
    36583667#endif
    36593668#if defined(_NONLIND_)
     
    38463855                break;
    38473856
     3857
     3858                /*--------------------------------------------------------------------------*/
     3859            case subscript:
     3860                coval = get_val_f();
     3861                arg = get_locint_f();
     3862                res = get_locint_f();
     3863                {
     3864                    size_t cnt, idx, numvar = (size_t)trunc(fabs(coval));
     3865                    locint vectorloc;
     3866                    vectorloc = get_locint_f();
     3867#if !defined(_NTIGHT_)
     3868                    idx = (size_t)trunc(fabs(dp_T0[arg]));
     3869                    if (idx >= numvar)
     3870                        fprintf(DIAG_OUT, "ADOL-C warning: index out of bounds while subscripting n=%z, idx=%z\n", numvar, idx);
     3871                    arg1 = vectorloc+idx;
     3872                    IF_KEEP_WRITE_TAYLOR(res,keep,k,p);
     3873                    dp_T0[res] = dp_T0[arg1];
     3874#if defined(_INDO_)
     3875                    copy_index_domain(res, arg1, ind_dom);
     3876#else
     3877#if !defined(_ZOS_) /* BREAK_ZOS */
     3878                    ASSIGN_T(Targ1,TAYLOR_BUFFER[arg1])
     3879                    ASSIGN_T(Tres,TAYLOR_BUFFER[res])
     3880
     3881                    FOR_0_LE_l_LT_pk
     3882                    TRES_INC = TARG1_INC;
     3883#endif
     3884#endif
     3885#else
     3886                    fprintf(DIAG_OUT, "ADOL-C error: active subscripting does not work in safe mode, please use tight mode\n");
     3887                    exit(-2);
     3888#endif /* ALL_TOGETHER_AGAIN */
     3889                }
     3890                break;
     3891
     3892            case subscript_ref:
     3893                coval = get_val_f();
     3894                arg = get_locint_f();
     3895                res = get_locint_f();
     3896                {
     3897                    size_t cnt, idx, numvar = (size_t)trunc(fabs(coval));
     3898                    locint vectorloc;
     3899                    vectorloc = get_locint_f();
     3900#if !defined(_NTIGHT_)
     3901                    idx = (size_t)trunc(fabs(dp_T0[arg]));
     3902                    if (idx >= numvar)
     3903                        fprintf(DIAG_OUT, "ADOL-C warning: index out of bounds while subscripting (ref) n=%z, idx=%z\n", numvar, idx);
     3904                    arg1 = vectorloc+idx;
     3905                    IF_KEEP_WRITE_TAYLOR(res,keep,k,p);
     3906                    dp_T0[res] = arg1;
     3907#else
     3908                    fprintf(DIAG_OUT, "ADOL-C error: active subscripting does not work in safe mode, please use tight mode\n");
     3909                    exit(-2);
     3910#endif
     3911                }
     3912                break;
     3913
     3914            case ref_copyout:
     3915                arg = get_locint_f();
     3916                res = get_locint_f();
     3917#if !defined(_NTIGHT_)
     3918                arg1 = (size_t)trunc(fabs(dp_T0[arg]));
     3919                IF_KEEP_WRITE_TAYLOR(res,keep,k,p);
     3920                dp_T0[res] = dp_T0[arg1];
     3921#if defined(_INDO_)
     3922                copy_index_domain(res, arg1, ind_dom);
     3923#else
     3924#if !defined(_ZOS_) /* BREAK_ZOS */
     3925                ASSIGN_T(Targ1,TAYLOR_BUFFER[arg1])
     3926                ASSIGN_T(Tres,TAYLOR_BUFFER[res])
     3927
     3928                FOR_0_LE_l_LT_pk
     3929                TRES_INC = TARG1_INC;
     3930#endif
     3931#endif
     3932#else
     3933                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     3934                exit(-2);
     3935#endif /* ALL_TOGETHER_AGAIN */
     3936                break;
     3937
     3938            case ref_incr_a:
     3939                arg = get_locint_f();
     3940#if !defined(_NTIGHT_)
     3941                arg1 = (size_t)trunc(fabs(dp_T0[arg]));
     3942                IF_KEEP_WRITE_TAYLOR(arg1,keep,k,p);
     3943                dp_T0[arg1]++;
     3944#else
     3945                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     3946                exit(-2);
     3947#endif
     3948                break;
     3949
     3950            case ref_decr_a:
     3951                arg = get_locint_f();
     3952#if !defined(_NTIGHT_)
     3953                arg1 = (size_t)trunc(fabs(dp_T0[arg]));
     3954                IF_KEEP_WRITE_TAYLOR(arg1,keep,k,p);
     3955                dp_T0[arg1]--;
     3956#else
     3957                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     3958                exit(-2);
     3959#endif
     3960                break;
     3961
     3962            case ref_assign_d:
     3963                arg = get_locint_f();
     3964                coval = get_val_f();
     3965               
     3966#if !defined(_NTIGHT_)
     3967                arg1 = (size_t)trunc(fabs(dp_T0[arg]));
     3968                IF_KEEP_WRITE_TAYLOR(arg1,keep,k,p)
     3969                dp_T0[arg1] = coval;
     3970#if defined(_INDO_)
     3971                ind_dom[arg1][0] = 0;
     3972#else
     3973#if !defined(_ZOS_)
     3974                ASSIGN_T(Targ1, TAYLOR_BUFFER[arg1])
     3975
     3976                FOR_0_LE_l_LT_pk
     3977                TARG1_INC = 0;
     3978#endif
     3979#endif
     3980#else
     3981                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     3982                exit(-2);
     3983#endif
     3984                break;
     3985
     3986            case ref_assign_d_zero:
     3987                arg = get_locint_f();
     3988
     3989#if !defined(_NTIGHT_)
     3990                arg1 = (size_t)trunc(fabs(dp_T0[arg]));
     3991                IF_KEEP_WRITE_TAYLOR(arg1,keep,k,p)
     3992                dp_T0[arg1] = 0.0;
     3993#if defined(_INDO_)
     3994                ind_dom[arg1][0] = 0;
     3995#else
     3996#if !defined(_ZOS_)
     3997                ASSIGN_T(Targ1, TAYLOR_BUFFER[arg1])
     3998
     3999                FOR_0_LE_l_LT_pk
     4000                TARG1_INC = 0;
     4001#endif
     4002#endif
     4003#else
     4004                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4005                exit(-2);
     4006#endif
     4007                break;
     4008
     4009            case ref_assign_d_one:
     4010                arg = get_locint_f();
     4011
     4012#if !defined(_NTIGHT_)
     4013                arg1 = (size_t)trunc(fabs(dp_T0[arg]));
     4014                IF_KEEP_WRITE_TAYLOR(arg1,keep,k,p)
     4015                dp_T0[arg1] = 1.0;
     4016#if defined(_INDO_)
     4017                ind_dom[arg1][0] = 0;
     4018#else
     4019#if !defined(_ZOS_)
     4020                ASSIGN_T(Targ1, TAYLOR_BUFFER[arg1])
     4021
     4022                FOR_0_LE_l_LT_pk
     4023                TARG1_INC = 0;
     4024#endif
     4025#endif
     4026#else
     4027                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4028                exit(-2);
     4029#endif
     4030                break;
     4031
     4032            case ref_assign_a:           /* assign an adouble variable an    assign_a */
     4033                /* adouble value. (=) */
     4034                arg = get_locint_f();
     4035                res = get_locint_f();
     4036
     4037#if !defined(_NTIGHT_)
     4038                arg1 = (size_t)trunc(fabs(dp_T0[res]));
     4039                IF_KEEP_WRITE_TAYLOR(arg1,keep,k,p)
     4040                dp_T0[arg1] = dp_T0[arg];
     4041#if defined(_INDO_)
     4042                copy_index_domain(arg1, arg, ind_dom);
     4043#else
     4044#if !defined(_ZOS_) /* BREAK_ZOS */
     4045                ASSIGN_T(Targ,TAYLOR_BUFFER[arg])
     4046                ASSIGN_T(Targ1,TAYLOR_BUFFER[arg1])
     4047
     4048                FOR_0_LE_l_LT_pk
     4049                TARG1_INC = TARG_INC;
     4050#endif
     4051#endif
     4052#else
     4053                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4054                exit(-2);
     4055#endif /* ALL_TOGETHER_AGAIN */
     4056                break;
     4057
     4058            case ref_assign_ind:       /* assign an adouble variable an    assign_ind */
     4059                /* independent double value (<<=) */
     4060                arg = get_locint_f();
     4061
     4062
     4063#if !defined(_NTIGHT_)
     4064                res = (size_t)trunc(fabs(dp_T0[arg]));
     4065                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4066                dp_T0[res] = basepoint[indexi];
     4067#if defined(_INDO_)
     4068                ind_dom[res][0] = 1;
     4069                ind_dom[res][2] = indexi;
     4070#else
     4071#if !defined(_ZOS_) /* BREAK_ZOS */
     4072                ASSIGN_T(Tres, TAYLOR_BUFFER[res])
     4073
     4074#ifdef _INT_FOR_
     4075                FOR_0_LE_l_LT_p
     4076                TRES_INC = ARGUMENT(indexi,l,i);
     4077#else
     4078                FOR_0_LE_l_LT_p
     4079                FOR_0_LE_i_LT_k
     4080                TRES_INC = ARGUMENT(indexi,l,i);
     4081#endif
     4082#endif
     4083#endif
     4084#else
     4085                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4086                exit(-2);
     4087#endif /* ALL_TOGETHER_AGAIN */
     4088                ++indexi;
     4089                break;
     4090
     4091            case ref_eq_plus_d:            /* Add a floating point to an    eq_plus_d */
     4092                /* adouble. (+=) */
     4093                arg  = get_locint_f();
     4094                coval = get_val_f();
     4095
     4096
     4097#if !defined(_NTIGHT_)
     4098                res = (size_t)trunc(fabs(dp_T0[arg]));
     4099                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4100                dp_T0[res] += coval;
     4101#else
     4102                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4103                exit(-2);
     4104#endif /* !_NTIGHT_ */
     4105                break;
     4106
     4107                /*--------------------------------------------------------------------------*/
     4108            case ref_eq_plus_a:             /* Add an adouble to another    eq_plus_a */
     4109                /* adouble. (+=) */
     4110                arg = get_locint_f();
     4111                arg1 = get_locint_f();
     4112
     4113#if !defined(_NTIGHT_)
     4114                res = (size_t)trunc(fabs(dp_T0[arg1]));
     4115                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4116                dp_T0[res] += dp_T0[arg];
     4117#if defined(_INDO_)
     4118                merge_2_index_domains(res, arg, ind_dom);
     4119#else
     4120#if !defined(_ZOS_) /* BREAK_ZOS */
     4121                ASSIGN_T(Tres, TAYLOR_BUFFER[res])
     4122                ASSIGN_T(Targ, TAYLOR_BUFFER[arg])
     4123
     4124#ifdef _INT_FOR_
     4125                FOR_0_LE_l_LT_pk
     4126                TRES_INC |= TARG_INC;
     4127#else
     4128                FOR_0_LE_l_LT_pk
     4129                TRES_INC += TARG_INC;
     4130#endif
     4131#endif
     4132#endif
     4133#else
     4134                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4135                exit(-2);
     4136#endif /* ALL_TOGETHER_AGAIN */
     4137                break;
     4138
     4139            case ref_eq_min_d:       /* Subtract a floating point from an    eq_min_d */
     4140                /* adouble. (-=) */
     4141                arg = get_locint_f();
     4142                coval = get_val_f();
     4143
     4144#if !defined(_NTIGHT_)
     4145                res = (size_t)trunc(fabs(dp_T0[arg]));
     4146                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4147                dp_T0[res] -= coval;
     4148#else
     4149                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4150                exit(-2);
     4151#endif /* !_NTIGHT_ */
     4152                break;
     4153
     4154                /*--------------------------------------------------------------------------*/
     4155            case ref_eq_min_a:        /* Subtract an adouble from another    eq_min_a */
     4156                /* adouble. (-=) */
     4157                arg = get_locint_f();
     4158                arg1 = get_locint_f();
     4159
     4160#if !defined(_NTIGHT_)
     4161                res = (size_t)trunc(fabs(dp_T0[arg1]));
     4162                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4163                dp_T0[res] -= dp_T0[arg];
     4164#if defined(_INDO_)
     4165                merge_2_index_domains(res, arg, ind_dom);
     4166#else
     4167#if !defined(_ZOS_) /* BREAK_ZOS */
     4168                ASSIGN_T(Tres, TAYLOR_BUFFER[res])
     4169                ASSIGN_T(Targ, TAYLOR_BUFFER[arg])
     4170
     4171#ifdef _INT_FOR_
     4172                FOR_0_LE_l_LT_pk
     4173                TRES_INC |= TARG_INC;
     4174#else
     4175                FOR_0_LE_l_LT_pk
     4176                TRES_INC -= TARG_INC;
     4177#endif
     4178#endif
     4179#endif
     4180#else
     4181                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4182                exit(-2);
     4183#endif /* ALL_TOGETHER_AGAIN */
     4184                break;
     4185
     4186            case ref_eq_mult_d:              /* Multiply an adouble by a    eq_mult_d */
     4187                /* flaoting point. (*=) */
     4188                arg = get_locint_f();
     4189                coval = get_val_f();
     4190
     4191#if !defined(_NTIGHT_)
     4192                res = (size_t)trunc(fabs(dp_T0[arg]));
     4193                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4194                dp_T0[res] *= coval;
     4195#if !defined(_INDO_)
     4196#if !defined(_ZOS_) /* BREAK_ZOS */
     4197#if !defined( _INT_FOR_)
     4198
     4199                FOR_0_LE_l_LT_pk
     4200                ASSIGN_T(Tres, TAYLOR_BUFFER[res])
     4201
     4202                FOR_0_LE_l_LT_pk
     4203                TRES_INC *= coval;
     4204#endif
     4205#endif
     4206#endif
     4207#else
     4208                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4209                exit(-2);
     4210#endif /* ALL_TOGETHER_AGAIN */
     4211                break;
     4212
     4213            case ref_eq_mult_a:       /* Multiply one adouble by another    eq_mult_a */
     4214                /* (*=) */
     4215                arg = get_locint_f();
     4216                arg1 = get_locint_f();
     4217
     4218#if !defined(_NTIGHT_)
     4219                res = (size_t)trunc(fabs(dp_T0[arg1]));
     4220                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4221#if defined(_INDO_)
     4222                merge_2_index_domains(res, arg, ind_dom);
     4223#if defined(_NONLIND_)
     4224                extend_nonlinearity_domain_binary(res, arg, ind_dom, nonl_dom);
     4225#endif
     4226#else
     4227#if !defined(_ZOS_) /* BREAK_ZOS */
     4228                ASSIGN_T(Tres, TAYLOR_BUFFER[res])
     4229                ASSIGN_T(Targ, TAYLOR_BUFFER[arg])
     4230
     4231                INC_pk_1(Tres)
     4232                INC_pk_1(Targ)
     4233
     4234#ifdef _INT_FOR_
     4235                FOR_p_GT_l_GE_0
     4236                TRES_FODEC |= TARG_DEC;
     4237#else
     4238                FOR_p_GT_l_GE_0
     4239                FOR_k_GT_i_GE_0
     4240                { TRES_FODEC = dp_T0[res]*TARG_DEC +
     4241                               TRES*dp_T0[arg];
     4242                  DEC_TRES_FO
     4243#ifdef _HIGHER_ORDER_
     4244                  TresOP = Tres-i;
     4245                  TargOP = Targ;
     4246
     4247                  for (j=0;j<i;j++)
     4248                  *Tres += (*TresOP++) * (*TargOP--);
     4249                  Tres--;
     4250#endif /* _HIGHER_ORDER_ */
     4251                }
     4252#endif
     4253#endif
     4254#endif
     4255                dp_T0[res] *= dp_T0[arg];
     4256#else
     4257                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4258                exit(-2);
     4259#endif /* !_NTIGHT_ */
     4260                break;
     4261
     4262            case ref_cond_assign:                                      /* cond_assign */
     4263                arg   = get_locint_f();
     4264                arg1  = get_locint_f();
     4265                arg2  = get_locint_f();
     4266                {
     4267                    locint ref = get_locint_f();
     4268                    coval = get_val_f();
     4269#if !defined(_NTIGHT_)
     4270                    res   = (size_t)trunc(fabs(dp_T0[ref]));
     4271
     4272                    IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4273
     4274                /* olvo 980924 changed order to allow reflexive ops */
     4275#if defined(_INDO_)
     4276                if (dp_T0[arg] > 0) {
     4277                    if (coval <= 0.0)
     4278                        MINDEC(ret_c,2);
     4279                    dp_T0[res] = dp_T0[arg1];
     4280
     4281                    combine_2_index_domains(res, arg1, arg2, ind_dom);
     4282                } else {
     4283                    if (coval > 0.0)
     4284                        MINDEC(ret_c,2);
     4285                    if (dp_T0[arg] == 0)
     4286                        MINDEC(ret_c,0);
     4287                    dp_T0[res] = dp_T0[arg2];
     4288
     4289                    combine_2_index_domains(res, arg1, arg2, ind_dom);
     4290                }
     4291#else
     4292#if !defined(_ZOS_) /* BREAK_ZOS */
     4293                ASSIGN_T(Tres,  TAYLOR_BUFFER[res])
     4294                ASSIGN_T(Targ1, TAYLOR_BUFFER[arg1])
     4295                ASSIGN_T(Targ2, TAYLOR_BUFFER[arg2])
     4296#endif /* ALL_TOGETHER_AGAIN */
     4297
     4298#ifdef _INT_FOR_
     4299                coval = get_val_f();
     4300
     4301                if (dp_T0[arg] > 0)
     4302                    FOR_0_LE_l_LT_pk
     4303                    TRES_INC = TARG1_INC;
     4304                else
     4305                    FOR_0_LE_l_LT_pk
     4306                    TRES_INC = TARG2_INC;
     4307
     4308                if (dp_T0[arg] > 0) {
     4309                    if (coval <= 0.0)
     4310                        MINDEC(ret_c,2);
     4311                    dp_T0[res] = dp_T0[arg1];
     4312                } else {
     4313                    if (coval > 0.0)
     4314                        MINDEC(ret_c,2);
     4315                    if (dp_T0[arg] == 0)
     4316                        MINDEC(ret_c,0);
     4317                    dp_T0[res] = dp_T0[arg2];
     4318                }
     4319                FOR_0_LE_l_LT_pk
     4320                TRES_INC = TARG1_INC | TARG2_INC;
     4321#else
     4322#if !defined(_ZOS_) /* BREAK_ZOS */
     4323                if (dp_T0[arg] > 0)
     4324                    FOR_0_LE_l_LT_pk
     4325                    TRES_INC = TARG1_INC;
     4326                else
     4327                    FOR_0_LE_l_LT_pk
     4328                    TRES_INC = TARG2_INC;
     4329#endif
     4330
     4331                if (dp_T0[arg] > 0) {
     4332                    if (coval <= 0.0)
     4333                        MINDEC(ret_c,2);
     4334                    dp_T0[res] = dp_T0[arg1];
     4335                } else {
     4336                    if (coval > 0.0)
     4337                        MINDEC(ret_c,2);
     4338                    if (dp_T0[arg] == 0)
     4339                        MINDEC(ret_c,0);
     4340                    dp_T0[res] = dp_T0[arg2];
     4341                }
     4342#endif
     4343#endif
     4344#else
     4345                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4346                exit(-2);
     4347#endif /* ALL_TOGETHER_AGAIN */
     4348                }
     4349                break;
     4350
     4351            case ref_cond_assign_s:                                  /* cond_assign_s */
     4352                arg   = get_locint_f();
     4353                arg1  = get_locint_f();
     4354                arg2   = get_locint_f();
     4355                coval = get_val_f();
     4356
     4357#if !defined(_NTIGHT_)
     4358                res = (size_t)trunc(fabs(dp_T0[arg2]));
     4359                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
     4360
     4361                /* olvo 980924 changed order to allow reflexive ops */
     4362#if defined(_INDO_)
     4363                    copy_index_domain(res, arg1, ind_dom);
     4364#else
     4365#if !defined(_ZOS_) /* BREAK_ZOS */
     4366                ASSIGN_T(Tres,  TAYLOR_BUFFER[res])
     4367                ASSIGN_T(Targ1, TAYLOR_BUFFER[arg1])
     4368#endif /* ALL_TOGETHER_AGAIN */
     4369
     4370#ifdef _INT_FOR_
     4371                coval = get_val_f();
     4372
     4373                if (dp_T0[arg] > 0)
     4374                    FOR_0_LE_l_LT_pk
     4375                    TRES_INC = TARG1_INC;
     4376
     4377                if (dp_T0[arg] > 0) {
     4378                    if (coval <= 0.0)
     4379                        MINDEC(ret_c,2);
     4380                    dp_T0[res] = dp_T0[arg1];
     4381                } else
     4382                    if (dp_T0[arg] == 0)
     4383                        MINDEC(ret_c,0);
     4384#else
     4385#if !defined(_ZOS_) /* BREAK_ZOS */
     4386                if (dp_T0[arg] > 0)
     4387                    FOR_0_LE_l_LT_pk
     4388                    TRES_INC = TARG1_INC;
     4389#endif
     4390                if (dp_T0[arg] > 0) {
     4391                    if (coval <= 0.0)
     4392                        MINDEC(ret_c,2);
     4393                    dp_T0[res] = dp_T0[arg1];
     4394                } else
     4395                    if (dp_T0[arg] == 0)
     4396                        MINDEC(ret_c,0);
     4397#endif
     4398#endif
     4399#else
     4400                fprintf(DIAG_OUT, "ADOL-C error: active vector element referencing does not work in safe mode, please use tight mode\n");
     4401                exit(-2);
     4402#endif /* ALL_TOGETHER_AGAIN */
     4403                break;
    38484404
    38494405                /****************************************************************************/
  • trunk/ADOL-C/test/Makefile.in

    r322 r337  
    145145LTLIBOBJS = @LTLIBOBJS@
    146146MAKEINFO = @MAKEINFO@
     147MANIFEST_TOOL = @MANIFEST_TOOL@
    147148MKDIR_P = @MKDIR_P@
    148149NM = @NM@
     
    174175ac_adolc_cxxflags = @ac_adolc_cxxflags@
    175176ac_aux_dir = @ac_aux_dir@
     177ac_ct_AR = @ac_ct_AR@
    176178ac_ct_CC = @ac_ct_CC@
    177179ac_ct_CXX = @ac_ct_CXX@
     
    207209localedir = @localedir@
    208210localstatedir = @localstatedir@
    209 lt_ECHO = @lt_ECHO@
    210211mandir = @mandir@
    211212mkdir_p = @mkdir_p@
Note: See TracChangeset for help on using the changeset viewer.