리눅스 커널에서 log10을 계산을 해야 하는데...
검색을 좀 해보았더니...
그리 안나오더군요.. 나온것도 링크가 끊겨있고.
직접만드는 방법도 있지만... 지금 log10 만드는게 문제가 아닌지라 여기다 질문남겨봅니다.
커널에서 사용가능하게 구현된 소스(C소스)나 라이브러리가 있다면 좀 알려주세요.
그럼 고견 부탁드려요.
echo 'l(10)' | bc -l
==== No one asks you for change or directions. -- Slo-Mo, J. Krokidas
리눅스에서 log 10을 계산하는 게 아니고, 리눅스 "커널"에서 log 10을 계산하는 것입니다.
앗 죄송. 이거라도.. 죄송한 마음에..
* http://www.linuxforums.org/forum/linux-kernel/40760-how-use-logarithmic-log-function-kernel-code.html
awk 'BEGIN{print log(10);}' perl -e 'print log(10)' ==== No one asks you for change or directions. -- Slo-Mo, J. Krokidas
원래 질문하신 분께서는 10을 밑으로 하는 상용로그를 의도하신 거 같습니다. 애석하지만 bc의 l(), awk의 log(), perl의 log() 모두 e를 밑으로 하는 자연로그(ln)입니다.
게다가 "커널"이라고 명시되어 있네요.
------------------------------- == warning 대부분 틀린 얘기입니다 warning ===
어차피 원래 질문하신 내용과 관계없는 내용입니다만. log(x)/log(10) 같은 식으로 써주면 상용로그값도 계산되죠..
그렇지 않나요?
log10이 부동소수점으로 필요한 것이 아니라, 정수를 10진법으로 출력할 때의 자리수만 필요한 것이라면, 계속 10으로 나눠서 간단하게 계산할 수 있습니다.
예를 들어,
int number_of_digits(int n) { int l = 0; while (n) { n = n / 10; l++; } return l; }
그냥 math.h를 include하고 log10 쓰면 되지 않나요? 커널 내부에서만 쓰는 수학 라이브러리가 따로 있을거 같지 않은데... -- feel the gravity
log10
feel the gravity
http://kerneltrap.org/node/6405
정수로 emulation하는 것은 FP 하드웨어 쓰는 것보다 더 느리기 대문에 userspace에서 하는 것이 좋다네요.
kernel안에서 task switching속도를 높이려고(?) 커널안에서는 FP의 레지스터를 관리하지 않는다고 들었습니다... 혹시 필요가 있으면 user space에서 계산하거나 굳이 필요하다면, 많은 계산이 필요없다면 배열로 table을 미리 만들어두고 사용하는것도 좋습니다.
댓글 주신 분들 감사합니다.
그냥 어플로 넘기려고 합니다. 소수점을 생략하자니... 오차가 너무 큰거 같아요...
좋은 말씀 감사합니다.
그리고 하신 말씀중에서...
userspace에서 하라는 말은 어플로 넘겨서 해라라는 말인가요? 아니면.. userspace에서 뭔가를 계산 할 수있는 기능이 커널에 있는것인가요? 궁금해지네요. ^^
userspace == 어플리케이션에서 계산하라는 뜻입니다.
---- 데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
echo 'l(10)' | bc -l ==== No
echo 'l(10)' | bc -l
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
커널!
리눅스에서 log 10을 계산하는 게 아니고, 리눅스 "커널"에서 log 10을 계산하는 것입니다.
앗 죄송.====No one asks
앗 죄송. 이거라도.. 죄송한 마음에..
* http://www.linuxforums.org/forum/linux-kernel/40760-how-use-logarithmic-log-function-kernel-code.html
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
awk 'BEGIN{print
awk 'BEGIN{print log(10);}'
perl -e 'print log(10)'
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
흠.
원래 질문하신 분께서는 10을 밑으로 하는
상용로그를 의도하신 거 같습니다.
애석하지만 bc의 l(), awk의 log(), perl의 log()
모두 e를 밑으로 하는 자연로그(ln)입니다.
게다가 "커널"이라고 명시되어 있네요.
-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===
어차피 원래
어차피 원래 질문하신 내용과 관계없는 내용입니다만. log(x)/log(10) 같은 식으로 써주면 상용로그값도 계산되죠..
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas
커널이면.. 아마 C소스이어야 할것인데...
그렇지 않나요?
자리수?
log10이 부동소수점으로 필요한 것이 아니라, 정수를 10진법으로 출력할 때의 자리수만 필요한 것이라면, 계속 10으로 나눠서 간단하게 계산할 수 있습니다.
예를 들어,
그냥 math.h를
그냥 math.h를 include하고
log10
쓰면 되지 않나요? 커널 내부에서만 쓰는 수학 라이브러리가 따로 있을거 같지 않은데...--
feel the gravity
feel the gravity
자주 나오는 얘기네요.
http://kerneltrap.org/node/6405
정수로 emulation하는 것은 FP 하드웨어 쓰는 것보다 더 느리기 대문에 userspace에서 하는 것이 좋다네요.
kernel안에서 task
kernel안에서 task switching속도를 높이려고(?) 커널안에서는 FP의 레지스터를 관리하지 않는다고 들었습니다...
혹시 필요가 있으면 user space에서 계산하거나 굳이 필요하다면, 많은 계산이 필요없다면 배열로 table을 미리 만들어두고 사용하는것도 좋습니다.
음. 그냥 어플로 넘기려구요..
댓글 주신 분들 감사합니다.
그냥 어플로 넘기려고 합니다.
소수점을 생략하자니...
오차가 너무 큰거 같아요...
좋은 말씀 감사합니다.
그리고 하신 말씀중에서...
userspace에서 하라는 말은 어플로 넘겨서 해라라는 말인가요?
아니면..
userspace에서 뭔가를 계산 할 수있는 기능이 커널에 있는것인가요?
궁금해지네요. ^^
userspace ==
userspace == 어플리케이션에서 계산하라는 뜻입니다.
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
댓글 달기