;数学类基本函数
;;;name:BF-math-union
;;;desc:列表并集
;;;arg:lst1:列表
;;;arg:lst2:列表
;;;return:并集运算后的列表
;;;example:(BF-math-union '(102.946 68.6354 3) '(112.102 97.4851 3))
(defun BF-math-union (lst1 lst2)
(append lst1
(vl-remove-if '(lambda (x) (member x lst1)) lst2)
)
)
;;;函数名称:BF-Math-SymmetricDifference
;;;函数说明:列表对称差集--leemac
;;;参 数:l1:列表
;;;参 数:l2:列表
;;;返 回 值:对称差集运算后的列表
;;;示 例:(BF-Math-SymmetricDifference l1 l2)
(defun BF-Math-SymmetricDifference ( l1 l2 )
(append
(vl-remove-if '(lambda ( x ) (member x l2)) l1)
(vl-remove-if '(lambda ( x ) (member x l1)) l2)
)
)
;;;name:BF-math-Difference
;;;desc:列表差集
;;;arg:lst1:列表
;;;arg:lst2:列表
;;;return:差集运算后的列表
;;;example:(BF-math-Difference '(102.946 68.6354 3) '(112.102 97.4851 3))
(defun BF-math-Difference (lst1 lst2 / lst)
(vl-remove-if '(lambda ( x ) (member x lst2)) lst1)
)
;;;name:BF-math-intersect
;;;desc:列表交集
;;;arg:lst1:列表
;;;arg:lst2:列表
;;;return:交集运算后的列表
;;;example:(BF-math-intersect '(102.946 68.6354 3) '(112.102 97.4851 3))
(defun BF-math-intersect (lst1 lst2)
(vl-remove-if-not '(lambda (x) (member x lst2)) lst1)
)
;;;name:BF-math-minlist
;;;desc:计算列表的最小值
;;;arg:lst:列表
;;;return:列表的最小值
;;;example:(BF-math-minlist '(102.946 68.6354 3))
(defun BF-math-minlist (lst)
(if (atom lst)
lst
(apply 'min lst))
)
;;;name:BF-math-maxlist
;;;desc:计算列表的最大值
;;;arg:lst:列表
;;;return:列表的最大值
;;;example:(BF-math-maxlist '(102.946 68.6354 3))
(defun BF-math-maxlist (lst)
(if (atom lst)
lst
(apply 'max lst))
)
;;;name:BF-math-power
;;;desc:增强power函数,目的为扩展expt函数
;;;arg:base:字符串,数字,列表类型,其他类型返回nil
;;;arg:pow:整数(用于字符串,列表,数字)实数(用于数字)
;;;return:参数都为数字时,返回expt计算的结果,base为字符串和列表时,返回自乘的结果
;;;example:(BF-math-power '(102.946 68.6354 3) 2)
(defun BF-math-power (base pow / str1)
(cond
((BF-stringp base)
(progn
(setq str1 "")
(repeat pow
(setq str1 (strcat str1 base))
)
))
((or (BF-intp base)(BF-realp base)) (expt base pow))
((listp base)
(progn
(repeat pow</