Skip to content
Snippets Groups Projects
  1. Aug 30, 2018
  2. Aug 29, 2018
    • Vassil Vassilev's avatar
      [cxxmodules] Fix the infinite loop in rootcling when building GenVector. · 6f5dc897
      Vassil Vassilev authored
      Adding Math/Math.h to the MathCore module makes the generation of GenVector
      dictionary hand due to a bug in rootcling/clang. The redeclaration chain of
      'abs' shadow declaration (from stl math.h) is broken.
      
      In general there are a few remaining issues with stl's cmath, math.h and
      libc math.h header files. We cannot yet reliably put them in the modulemaps.
      This causes the current issue: we end up with content duplication which
      triggers a bugs in clang.
      6f5dc897
  3. Aug 24, 2018
  4. Aug 23, 2018
  5. Aug 22, 2018
  6. Aug 20, 2018
  7. Aug 17, 2018
  8. Aug 16, 2018
  9. Aug 10, 2018
  10. Aug 09, 2018
  11. Aug 03, 2018
    • Lorenzo Moneta's avatar
      Flag in NegativeG2LineSearch if the cov matrix is not pos-defined. In this... · 0687aaca
      Lorenzo Moneta authored
      Flag in NegativeG2LineSearch if the cov matrix is not pos-defined. In this case when in VariableMetric we exit the function minimum is set to be invalid.
      This should fix ROOT-9522
      0687aaca
    • Vassil Vassilev's avatar
      Enable the automatic differentiation library clad in ROOT. · 3590e277
      Vassil Vassilev authored
      clad is a C++ plugin for clang and cling that implements automatic
      differentiation of user-defined functions by employing the chain rule in
      forward and reverse mode, coupled with source code transformation and AST
      constant fold.
      
      In mathematics and computer algebra, automatic differentiation (AD) is a
      set of techniques to numerically evaluate the derivative of a function
      specified by a computer program. AD exploits the fact that every computer
      program, no matter how complicated, executes a sequence of elementary
      arithmetic operations (addition, subtraction, multiplication, division, etc.)
      and elementary functions (exp, log, sin, cos, etc.). By applying the chain
      rule repeatedly to these operations, derivatives of arbitrary order can
      be computed automatically, accurately to working precision, and using at
      most a small constant factor more arithmetic operations than the original
      program.
      
      AD is an alternative technique to symbolic and numerical differentiation.
      These classical methods run into problems: symbolic differentiation leads
      to inefficient code (unless done carefully) and faces the difficulty of
      converting a computer program into a single expression, while numerical
      differentiation can introduce round-off errors in the discretization
      process and cancellation. Both classical methods have problems with
      calculating higher derivatives, where the complexity and errors increase.
      Finally, both classical methods are slow at computing the partial
      derivatives of a function with respect to many inputs, as is needed for
      gradient-based optimization algorithms. Automatic differentiation solves
      all of these problems, at the expense of introducing more software
      dependencies.
      
      This patch allows ROOT to interoperate with clad. Namely, users can ask
      the interpreter to produce a derivative or a gradient to a known function.
      
      An illustrative example code for first order derivative:
      
      root [0] #include "Math/CladDerivator.h"
      root [1] double my_pow2(double x) { return x*x; }
      root [2] auto meta_obj = clad::differentiate(my_pow2, /*wrt 1-st argument*/0);
      root [3] meta_obj.dump();
      The code is: double my_pow2_darg0(double x) {
          return (1. * x + x * 1.);
      }
      root [5] meta_obj.execute(1) // no iterations, at the cost of function call.
      (double) 2.0000000
      
      Learn more about clad at https://github.com/vgvassilev/clad
      
      Patch by Aleksandr Efremov and me!
      3590e277
  12. Aug 02, 2018
  13. Jul 23, 2018
  14. Jul 20, 2018
  15. Jul 19, 2018
  16. Jul 17, 2018
  17. Jul 16, 2018
    • Guilherme Amadio's avatar
      Use all-keyword style in target_link_libraries() · fe4ffa75
      Guilherme Amadio authored
      When using builtin_openssl=ON, CMake erroneously exports the builtin
      static libraries in ROOTConfig-targets.cmake, which causes problems with
      dependent projects. In order to avoid this, we need Net and RHTTP to use
      SSL as a private dependency. Since CMake requires target_link_libraries()
      to either be all-plain (as before) or all-keyword (required to allow
      PRIVATE linking), we need to move the build system to use all-keyword
      linking only.
      
      Fixes: ROOT-9532
      fe4ffa75
  18. Jul 06, 2018
  19. Jun 04, 2018
  20. Jun 01, 2018
Loading