MPQC
2.3.1
src
lib
math
scmat
offset.h
1
//
2
// offset.h
3
//
4
// Copyright (C) 1996 Limit Point Systems, Inc.
5
//
6
// Author: Curtis Janssen <cljanss@ca.sandia.gov>
7
// Maintainer: LPS
8
//
9
// This file is part of the SC Toolkit.
10
//
11
// The SC Toolkit is free software; you can redistribute it and/or modify
12
// it under the terms of the GNU Library General Public License as published by
13
// the Free Software Foundation; either version 2, or (at your option)
14
// any later version.
15
//
16
// The SC Toolkit is distributed in the hope that it will be useful,
17
// but WITHOUT ANY WARRANTY; without even the implied warranty of
18
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
// GNU Library General Public License for more details.
20
//
21
// You should have received a copy of the GNU Library General Public License
22
// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23
// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24
//
25
// The U.S. Government is granted a limited license as per AL 91-7.
26
//
27
28
#ifndef _math_scmat_offset_h
29
#define _math_scmat_offset_h
30
31
#ifdef __c_plus_plus
32
33
namespace
sc {
34
35
static
inline
int
36
i_offset(
int
i)
37
{
38
return
((i*(i+1)) >> 1);
39
}
40
41
static
inline
int
42
ij_offset(
int
i,
int
j)
43
{
44
return
(i>j) ? (((i*(i+1)) >> 1) + j) : (((j*(j+1)) >> 1) + i);
45
}
46
47
static
inline
int
48
igtj_offset(
int
i,
int
j)
49
{
50
return
((i*(i+1)) >> 1) + j;
51
}
52
53
}
54
55
#else
56
57
#define i_offset(i) (((i)*((i)+1))>>1)
58
#define ij_offset(i,j) (((i)>(j))?(i_offset(i)+(j)):(i_offset(j)+(i)))
59
#define igtj_offset(i,j) (i_offset(i)+(j))
60
61
#endif
62
63
#endif
Generated at Sun Jan 26 2020 23:33:04 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.16.