Towards Differentiation-Enabled Fortran 95 Compiler Technology

21 downloads 0 Views 141KB Size Report
Compiler, Automatic Differentiation. 1. ... numerical differentiation using divided difference quotients ... the chain rule is used to compute first and possibly higher-.
Towards Differentiation-Enabled Fortran 95 Compiler Technology Malcolm Cohen

Uwe Naumann

Jan Riehme

The Numerical Algorithms Group, Oxford, UK

Argonne National Laboratory, IL, USA

University of Hertfordshire, Hatfield, UK

[email protected] [email protected]

ABSTRACT

                                                                                 !     "      #   "      Keywords

$       1. INTRODUCTION

 "               %                                    &   '    "         (           "         " )                                       *                +        & "    '      "      " "              ("   "     Æ        ,.// 0 /12 3     '          "     ,4   -      ,  ( -                 %    "                                      $    (        











Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. SAC 2003 Melbourne, Florida USA Copyright 2003 ACM 1-58113-624-2/03/03 ... 5.00.

5

[email protected]

           6   ,  ,--   















                       

   "        )       '          "                     *          %          7 ,      7 ,      /1  /1 8  ( ,   " 8 - 7 ,                        3                              

                                                     "       9              "                 Æ  "               "      "    Æ  "    #   "           ./2 :     ./; $  ;2                 

  



¼

    

   

   

 

 

   

                                     !        

                         "      " 9                                 "            (   '                       *  "          "  !                      "   " &              8  

         &          8   "              $      &                               "  ./; $  ;2        8    "                                        ,  ./; $  ;2-             "                    $ ,"""#$%!#!#&'-     F>G>??G1/             (      CF                    "     ?11? B(                          + !    """#(#!#&')("%)%%!) *%*"#$            "     G                  "             !* +&# ,-   %     " ./01 /23                 "          &                        8    (           ./; $  ;2              " /23 ./01 /23  44 *  5./ 067057 4 44  7 /23 ./01 /23

&                          &                     8    (     ,   8        - "                       8          6         "    

  ,   "        "

 -   )   $              " (     "                    "      "   "   (                    











¼











67/ 87./057  ./01 %( / % /23 ./01 /23 07/7/ 07 44 %( /23 ./01 /23 44 % %9*  %(9* 08 5./ %(9   /:7 5./ %9 457 %(9  

%9 %(9  ! %(9*  7 08 7 87./057  ./01

       %9*         "                                       B(    !* +&# ,                 CF         (              %    /23 01 /23 44 ;! ### 0887/0/ 07377/                          ;! 3

 ,$A> ./?2    &   (      + 7 0  $%+ 7 ? :   CF            0"   8 6 

¼



                                                

      

            

&   "  )   +                $%+      " ( C       &           "                   (     $      $A>               8            ( 4. ACKNOWLEDGEMENTS    /   0                 8     C    "   E   &        "    '          $   *            (  (     >    :*         "         B"  $   ;//1BCF;K      "          >     "   B  A "             E"       *   > $   :9   F>G>??G1/   )     "              '          APPENDIX   8    8   " (       "     8    A. BRATU PROBLEM WITH SEEDING (        " *           3        E&C         "    ) A$9        .L2              (                ("    8      & $A>           5/07 >3 + $%+  $%+ 8    8   "     (  07/= 07/7/ 07 44 + $%+                  07/7/ 07 44  + $%+ $%+                 07/7/ 075/ 44 8 +  8  &  (        07/= 44           44   ?#) + 8  ? $%+ )?# @ @ $  ) #$%+ ?  8 ?  $%+ )?# @ @ $  ) #$%+ ?  5  ? + 8  8  $%+ ) @ @ ?#$  ) #$%+ ?  8  8 ? $%+ ) @ @ #?$  ) #$%+ ?  8   $%+ )?# @ @ $  ) #$%+ ?  7 5 8 + 8 + +$%+ ) @ @ ?#$  +) #$%+ ? + 8 + 8 +? + 8 + 8 +$%+ )?# @



¼







 

4 3

5

2

6

1

7 9

8

:  "     (      '    CA                     (       I"   J     " 

(                    $A>  ( &    $       &   7                         (     $ 

      8     









       CF           35=6 607 0630.0/ 757

     

07/= 36/ 07/= 36/ 07/=   /23 01 /23 

44 44 44 44 44 44 44

     

+ A $%+ ?  +$%+   + $%+ $%+ + ;!  , -

!""" #  # $ "#

%&&'



) #A? B#C- C#D C#EA C#D @ @ B#C- #A? ) $%+ ) #B #?C-E?E )       C   A 

F  ? ? F  - ? F  E C

F  B B F  D B F  , -

   

  ( )     *

  

0887/0/ 07377/    4A 4  07377/ $%+   E4, 4  ! >3 + $%+  $%+  ;!  D E D ' : 9    >)  * D  /; ./2 = D P : C  Q A   3>  "         ?11? ./L2 : C