이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박선비
가입: 2013년 9월 4일 올린 글: 11
|
올려짐: 2013년9월20일 18:12 주제: 2-1 질문입니다. |
|
|
1) SIGMA(a,b,f)에서 a<b인 경우 0.0을 반환하는 것이 맞나요?
2) INTEGRAL(a,b,f)에서 a<b인 경우 0.0을 반환해야 하나요?
아니면 -INTEGRAL(b,a,f)로 계산해야 하나요?
3) 0으로 나누는 경우에는 float infinity가 나오도록 내버려 두면 되나요?
아니면 따로 devideByZero 와 같은 exception 처리할까요? |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월20일 20:51 주제: |
|
|
인용: | 1) SIGMA(a,b,f)에서 a<b인 경우 0.0을 반환하는 것이 맞나요? |
a>b 를 말씀하시는 것이겠죠? 네, 그러는 것으로 하겠습니다.
(변경 스펙 게시물에 추가)
인용: | 2) INTEGRAL(a,b,f)에서 a<b인 경우 0.0을 반환해야 하나요?
아니면 -INTEGRAL(b,a,f)로 계산해야 하나요? |
마찬가지로 a>b 를 말씀하시는 것이겠죠? 후자가 맞습니다. INTEGRAL의 수학적 정의를 사용하기로 했기 때문에 말씀하신 대로 -INTEGRAL(b,a,f)로 계산하면 되겠습니다.
인용: | 3) 0으로 나누는 경우에는 float infinity가 나오도록 내버려 두면 되나요?
아니면 따로 devideByZero 와 같은 exception 처리할까요? |
네, OCaml의 floating-point 연산을 그대로 활용하시면 됩니다.
정수의 경우에도 0으로 나누는 경우 OCaml이 Division_by_zero 예외를 내도록 그대로 두시면 됩니다.
(변경 스펙 게시물에 추가) |
|
위로 |
|
 |
박선비
가입: 2013년 9월 4일 올린 글: 11
|
올려짐: 2013년9월20일 21:31 주제: |
|
|
아 죄송합니다
1)과 2) 모두 a>b인 경우입니다ㅎㅎㅎ
3)에서 "정수의 경우에도 0으로 나누는 경우 OCaml이 Division_by_zero 예외를 내도록 그대로 두시면 됩니다" 라고 하셨는데...
저는 int가 들어오면 float으로 바로 바꾸게 해서
DIV(INT 1, INT 0)을 하면
DIV(REAL 1, REAL 0)과 같은 infinity가 나오거든요...
int를 받으면 바로 float으로 변형해서 계산하면 안 되나요? |
|
위로 |
|
 |
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2013년9월20일 21:44 주제: |
|
|
인용: | DIV(INT 1, INT 0)을 하면
DIV(REAL 1, REAL 0)과 같은 infinity가 나오거든요... |
어떻게 하셔도 됩니다.
infinity와 Division_by_zero 둘다 나올 수 있는 예제는 테스트하지 않거나 둘다 동일한것으로 간주하겠습니다. |
|
위로 |
|
 |
최준원
가입: 2007년 3월 30일 올린 글: 149
|
올려짐: 2013년9월20일 22:10 주제: |
|
|
인용: | int를 받으면 바로 float으로 변형해서 계산하면 안 되나요? |
한 가지 오해의 여지가 있을 것 같아 추가적으로 설명드립니다.
결론적으로 int를 받으면 바로 float으로 변형해서 계산하면 안됩니다.
위의 강동옥 조교의 답변은,
계산시 나올 수 있는 floating-point infinity 혹은 정수에서의 Division_by_zero를 차별해서 다루지 않겠다는 뜻이고요.
그 외 다른 일반적인 계산에 대해서는 int를 float으로 변형할 경우 계산 결과가 확연히 다릅니다.
예를 들어, OCaml 에서 3 / 2 = 1 이지만 3.0 /. 2.0 = 1.5 가 되죠.
따라서 int, float 계산은 계산 도중에 지속적으로 구별해 주셔야 합니다  |
|
위로 |
|
 |
|