This file is indexed.

/usr/include/givaro/givpower.h is in libgivaro-dev 4.0.2-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
// ==========================================================================
// Copyright(c)'1994-2009 by The Givaro group
// This file is part of Givaro.
// Givaro is governed by the CeCILL-B license under French law
// and abiding by the rules of distribution of free software.
// see the COPYRIGHT file for more details.
// file: givpowers.h
// Time-stamp: <15 Jun 15 16:36:32 Jean-Guillaume.Dumas@imag.fr>
// ==========================================================================

/** @file givpower.h
 * @ingroup system
 * @brief NO DOC
 */

#ifndef __GIVARO_power_H
#define __GIVARO_power_H

namespace Givaro {

// -------------------------------------------------------------
//! Integer log
// -------------------------------------------------------------
template<typename T>
	inline unsigned GIVINTLOG(const T& a)
{
    unsigned l(0);
    for(T v(a); v >>= 1; ++l) {}
    return l;
}



// -------------------------------------------------------------
//! Powering
// -------------------------------------------------------------
template<class TT, class UU>
TT power(const TT n, const UU l)
{
  if (l == 0) return 1 ;

  unsigned long p = (unsigned long) l ;
  short is_assg = 0 ;

  TT res = TT(1) ;
  TT puiss  = n ;

  while (p != 0) {
      if (p & 0x1) {
          if (is_assg)
              res *= puiss ;
          else {
          is_assg = 1 ;
          res = puiss ;
          }
      }
//       if ((p >>= 1) != 0) puiss = puiss * puiss ;
      if ((p >>= 1) != 0) puiss *= puiss ;

  }
  return res ;
}

#if 0
#include <givaro/givinteger.h>
template<> Integer power(const Integer n, const long l) { return pow(n,l); }
template<> Integer power(const Integer n, const unsigned long l) { return pow(n,l); }
template<> Integer power(const Integer n, const int l) { return pow(n,l); }
template<> Integer power(const Integer n, const unsigned int l) { return pow(n,l); }
#endif

//! dom_power
template<class D, class TT>
TT& dom_power(TT& res, const TT& n, long l, const D& F)
{
  if (l == 0) return F.assign(res,F.one) ;

  unsigned long p = (unsigned long) l ;
  bool is_assg = false ;

  TT puiss; F.init(puiss); F.assign(puiss,n) ;
  F.assign(res,F.one) ;

  while (p != 0) {
      if (p & 0x1) {
          if (is_assg)
              F.mulin(res,puiss) ;
          else {
          is_assg = true ;
          F.assign(res,puiss) ;
          }
      }
      if ((p >>= 1) != 0) { F.mulin(puiss,puiss) ; }
  }
  return res ;
}


#if 0
#include <cmath>

template<> double power<double>(const double a, const double e) {
   return pow(a,e);
}
#endif

} // namespace Givaro

#endif // __GIVARO_power_H
// vim:sts=8:sw=8:ts=8:noet:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s