Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
59847461
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
59847461
编写于
9月 20, 1997
作者:
T
Thomas G. Lockhart
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Include functions for integer/money arithmetic.
上级
eba607d8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
186 addition
and
9 deletion
+186
-9
src/backend/utils/adt/cash.c
src/backend/utils/adt/cash.c
+186
-9
未找到文件。
src/backend/utils/adt/cash.c
浏览文件 @
59847461
...
...
@@ -9,7 +9,7 @@
* workings can be found in the book "Software Solutions in C" by
* Dale Schumacher, Academic Press, ISBN: 0-12-632360-7.
*
* $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.1
5 1997/09/18 20:22:12 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.1
6 1997/09/20 16:15:34 thomas
Exp $
*/
#include <stdio.h>
...
...
@@ -366,11 +366,11 @@ cash_mi(Cash *c1, Cash *c2)
}
/* cash_mi() */
/* cash_mul()
* Multiply cash by float
ing point number
.
/* cash_mul
_flt8
()
* Multiply cash by float
8
.
*/
Cash
*
cash_mul
(
Cash
*
c
,
float8
*
f
)
cash_mul
_flt8
(
Cash
*
c
,
float8
*
f
)
{
Cash
*
result
;
...
...
@@ -383,17 +383,27 @@ cash_mul(Cash *c, float8 *f)
*
result
=
((
*
f
)
*
(
*
c
));
return
(
result
);
}
/* cash_mul() */
}
/* cash_mul
_flt8
() */
/* cash_div()
* Divide cash by floating point number.
/* flt8_mul_cash()
* Multiply float8 by cash.
*/
Cash
*
flt8_mul_cash
(
float8
*
f
,
Cash
*
c
)
{
return
(
cash_mul_flt8
(
c
,
f
));
}
/* flt8_mul_cash() */
/* cash_div_flt8()
* Divide cash by float8.
*
* XXX Don't know if rounding or truncating is correct behavior.
* Round for now. - tgl 97/04/15
*/
Cash
*
cash_div
(
Cash
*
c
,
float8
*
f
)
cash_div
_flt8
(
Cash
*
c
,
float8
*
f
)
{
Cash
*
result
;
...
...
@@ -409,7 +419,174 @@ cash_div(Cash *c, float8 *f)
*
result
=
rint
(
*
c
/
*
f
);
return
(
result
);
}
/* cash_div() */
}
/* cash_div_flt8() */
/* cash_mul_flt4()
* Multiply cash by float4.
*/
Cash
*
cash_mul_flt4
(
Cash
*
c
,
float4
*
f
)
{
Cash
*
result
;
if
(
!
PointerIsValid
(
f
)
||
!
PointerIsValid
(
c
))
return
(
NULL
);
if
(
!
PointerIsValid
(
result
=
PALLOCTYPE
(
Cash
)))
elog
(
WARN
,
"Memory allocation failed, can't multiply cash"
,
NULL
);
*
result
=
((
*
f
)
*
(
*
c
));
return
(
result
);
}
/* cash_mul_flt4() */
/* flt4_mul_cash()
* Multiply float4 by float4.
*/
Cash
*
flt4_mul_cash
(
float4
*
f
,
Cash
*
c
)
{
return
(
cash_mul_flt4
(
c
,
f
));
}
/* flt4_mul_cash() */
/* cash_div_flt4()
* Divide cash by float4.
*
* XXX Don't know if rounding or truncating is correct behavior.
* Round for now. - tgl 97/04/15
*/
Cash
*
cash_div_flt4
(
Cash
*
c
,
float4
*
f
)
{
Cash
*
result
;
if
(
!
PointerIsValid
(
f
)
||
!
PointerIsValid
(
c
))
return
(
NULL
);
if
(
!
PointerIsValid
(
result
=
PALLOCTYPE
(
Cash
)))
elog
(
WARN
,
"Memory allocation failed, can't divide cash"
,
NULL
);
if
(
*
f
==
0
.
0
)
elog
(
WARN
,
"cash_div: divide by 0.0 error"
);
*
result
=
rint
(
*
c
/
*
f
);
return
(
result
);
}
/* cash_div_flt4() */
/* cash_mul_int4()
* Multiply cash by int4.
*/
Cash
*
cash_mul_int4
(
Cash
*
c
,
int4
i
)
{
Cash
*
result
;
if
(
!
PointerIsValid
(
c
))
return
(
NULL
);
if
(
!
PointerIsValid
(
result
=
PALLOCTYPE
(
Cash
)))
elog
(
WARN
,
"Memory allocation failed, can't multiply cash"
,
NULL
);
*
result
=
((
i
)
*
(
*
c
));
return
(
result
);
}
/* cash_mul_int4() */
/* int4_mul_cash()
* Multiply int4 by cash.
*/
Cash
*
int4_mul_cash
(
int4
i
,
Cash
*
c
)
{
return
(
cash_mul_int4
(
c
,
i
));
}
/* int4_mul_cash() */
/* cash_div_int4()
* Divide cash by 4-byte integer.
*
* XXX Don't know if rounding or truncating is correct behavior.
* Round for now. - tgl 97/04/15
*/
Cash
*
cash_div_int4
(
Cash
*
c
,
int4
i
)
{
Cash
*
result
;
if
(
!
PointerIsValid
(
c
))
return
(
NULL
);
if
(
!
PointerIsValid
(
result
=
PALLOCTYPE
(
Cash
)))
elog
(
WARN
,
"Memory allocation failed, can't divide cash"
,
NULL
);
if
(
i
==
0
)
elog
(
WARN
,
"cash_idiv: divide by 0 error"
);
*
result
=
rint
(
*
c
/
i
);
return
(
result
);
}
/* cash_div_int4() */
/* cash_mul_int2()
* Multiply cash by int2.
*/
Cash
*
cash_mul_int2
(
Cash
*
c
,
int2
s
)
{
Cash
*
result
;
if
(
!
PointerIsValid
(
c
))
return
(
NULL
);
if
(
!
PointerIsValid
(
result
=
PALLOCTYPE
(
Cash
)))
elog
(
WARN
,
"Memory allocation failed, can't multiply cash"
,
NULL
);
*
result
=
((
s
)
*
(
*
c
));
return
(
result
);
}
/* cash_mul_int2() */
/* int2_mul_cash()
* Multiply int2 by cash.
*/
Cash
*
int2_mul_cash
(
int2
s
,
Cash
*
c
)
{
return
(
cash_mul_int2
(
c
,
s
));
}
/* int2_mul_cash() */
/* cash_div_int2()
* Divide cash by int2.
*
* XXX Don't know if rounding or truncating is correct behavior.
* Round for now. - tgl 97/04/15
*/
Cash
*
cash_div_int2
(
Cash
*
c
,
int2
s
)
{
Cash
*
result
;
if
(
!
PointerIsValid
(
c
))
return
(
NULL
);
if
(
!
PointerIsValid
(
result
=
PALLOCTYPE
(
Cash
)))
elog
(
WARN
,
"Memory allocation failed, can't divide cash"
,
NULL
);
if
(
s
==
0
)
elog
(
WARN
,
"cash_div: divide by 0 error"
);
*
result
=
rint
(
*
c
/
s
);
return
(
result
);
}
/* cash_div_int2() */
/* cashlarger()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录