This file is indexed.

/usr/share/calc/lnseries.cal is in apcalc-common 2.12.5.0-1build1.

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
111
112
/*
 * lnseries - special functions (e.g.: gamma, zeta, psi)
 *
 * Copyright (C) 2013 Christoph Zurnieden
 *
 * Calc is open software; you can redistribute it and/or modify it under
 * the terms of the version 2.1 of the GNU Lesser General Public License
 * as published by the Free Software Foundation.
 *
 * Calc is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
 * Public License for more details.
 *
 * A copy of version 2.1 of the GNU Lesser General Public License is
 * distributed with calc under the filename COPYING-LGPL.  You should have
 * received a copy with calc; if not, write to Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 * @(#) $Revision: 30.4 $
 * @(#) $Id: lnseries.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
 * @(#) $Source: /usr/local/src/bin/calc/cal/RCS/lnseries.cal,v $
 *
 * Under source code control:	2013/08/11 01:31:28
 * File existed as early as:	2013
 */


/*
 * hide internal function from resource debugging
 */
static resource_debug_level;
resource_debug_level = config("resource_debug", 0);


static __CZ__int_logs;
static __CZ__int_logs_limit;
static __CZ__int_logs_prec;


define deletelnseries(){
  free(__CZ__int_logs,__CZ__int_logs_limit,__CZ__int_logs_prec);
}

define lnfromseries(n){
  if(    isnull(__CZ__int_logs)
      || __CZ__int_logs_limit < n
      || __CZ__int_logs_prec < log(1/epsilon())){

    lnseries(n+1);
  }
  return __CZ__int_logs[n,0];
}

define lnseries(limit){
  local k j eps ;
  if(    isnull(__CZ__int_logs)
      || __CZ__int_logs_limit < limit
      || __CZ__int_logs_prec < log(1/epsilon())){
    __CZ__int_logs = mat[limit+1,2];
    __CZ__int_logs_limit = limit;
    __CZ__int_logs_prec = log(1/epsilon());

    /* probably still too much */
    eps = epsilon(epsilon()*10^(-(5+log(limit))));
    k =2;
    while(1){
      /* the prime itself, compute logarithm */
      __CZ__int_logs[k,0] = ln(k);
      __CZ__int_logs[k,1] = k;

      for(j = 2*k;j<=limit;j+=k){
       /* multiples of prime k, add logarithm of k computed earlier */
       __CZ__int_logs[j,0] += __CZ__int_logs[k,0];
       /* First hit, set counter to number */
       if(__CZ__int_logs[j,1] ==0)
         __CZ__int_logs[j,1]=j;
       /* reduce counter by prime added */
       __CZ__int_logs[j,1] //= __CZ__int_logs[k,1];
      }

      k++;
      if(k>=limit) break;
      /* Erastothenes-sieve: look for next prime. */
      while(__CZ__int_logs[k,0]!=0){
        k++;
        if(k>=limit) break;
      }
    }
    /* Second run to include the last factor */
    for(k=1;k<=limit;k++){
      if(__CZ__int_logs[k,1] != k){
        __CZ__int_logs[k,0] +=__CZ__int_logs[ __CZ__int_logs[k,1],0];
        __CZ__int_logs[k,1] = 0;
      }
    }

    epsilon(eps);
  }
  return 1;
}


/*
 * restore internal function from resource debugging
 */
config("resource_debug", resource_debug_level),;
if (config("resource_debug") & 3) {
    print "lnseries(limit)";
    print "lnfromseries(n)";
    print "deletelnseries()";
}