]> source.dussan.org Git - poi.git/commitdiff
support for POISSON function, see bug #49538
authorYegor Kozlov <yegor@apache.org>
Mon, 26 Jul 2010 12:13:07 +0000 (12:13 +0000)
committerYegor Kozlov <yegor@apache.org>
Mon, 26 Jul 2010 12:13:07 +0000 (12:13 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@979255 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/record/formula/eval/FunctionEval.java
src/java/org/apache/poi/hssf/record/formula/functions/NumericFunction.java
src/testcases/org/apache/poi/hssf/record/formula/functions/TestPoisson.java [new file with mode: 0644]

index 29cb7a2b60e49ae78ce183c57ec3cb2f71401db4..d6fe9299e59a8d015d70dcb7e9eb738d92142cfa 100644 (file)
 
     <changes>
         <release version="3.7-beta2" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="add">49538 - Added implementation for POISSON()</action>
            <action dev="POI-DEVELOPERS" type="add">49524 - Support for setting cell text to be vertically rotated, via style.setRotation(0xff)</action>
            <action dev="POI-DEVELOPERS" type="fix">49609 - Case insensitive matching of OOXML part names</action>
            <action dev="POI-DEVELOPERS" type="add">49581 - Ability to add, modify and remove series from HSSF Charts</action>
            <action dev="POI-DEVELOPERS" type="add">49185 - Support for HSSFNames where the comment is stored in a NameCommentRecord</action>
-           <action dev="POI-DEVELOPERS" type="fix">49599 - Correct writing of NoteRecord author text when switching between ASCII and Unicode</action>
-           <action dev="POI-DEVELOPERS" type="fix">HWPF: Improve reading of auto-saved ("complex") documents</action>
-           <action dev="POI-DEVELOPERS" type="add">Paragraph level as well as whole-file text extraction for Word 6/95 files through HWPF</action>
-           <action dev="POI-DEVELOPERS" type="add">Text Extraction support for older Word 6 and Word 95 files via HWPF</action>
-           <action dev="POI-DEVELOPERS" type="add">49508 - Allow the addition of paragraphs to XWPF Table Cells</action>
-           <action dev="POI-DEVELOPERS" type="fix">49446 - Don't consider 17.16.23 field codes as properly part of the paragraph's text</action>
-           <action dev="POI-DEVELOPERS" type="fix">XSLFSlideShow shouldn't break on .thmx (theme) files. Support for them is still very limited though</action>
+           <action dev="poi-developers" type="fix">49599 - correct writing of noterecord author text when switching between ascii and unicode</action>
+           <action dev="poi-developers" type="fix">hwpf: improve reading of auto-saved ("complex") documents</action>
+           <action dev="poi-developers" type="add">paragraph level as well as whole-file text extraction for word 6/95 files through hwpf</action>
+           <action dev="poi-developers" type="add">text extraction support for older word 6 and word 95 files via hwpf</action>
+           <action dev="poi-developers" type="add">49508 - allow the addition of paragraphs to xwpf table cells</action>
+           <action dev="poi-developers" type="fix">49446 - don't consider 17.16.23 field codes as properly part of the paragraph's text</action>
+           <action dev="poi-developers" type="fix">xslfslideshow shouldn't break on .thmx (theme) files. support for them is still very limited though</action>
         </release>
         <release version="3.7-beta1" date="2010-06-20">
-           <action dev="POI-DEVELOPERS" type="fix">49432 - Lazy caching of XSSFComment CTComment objects by reference, to make repeated comment searching faster</action>
-           <action dev="POI-DEVELOPERS" type="fix">Better handling of Outlook messages in HSMF when there's no recipient email address</action>
-           <action dev="POI-DEVELOPERS" type="fix">When formatting numbers with DataFormatter, handle brackets following colours</action>
-           <action dev="POI-DEVELOPERS" type="add">48574 - further XWPF support for tables, paragraphs, including enhanced support for adding new ones</action>
-           <action dev="POI-DEVELOPERS" type="add">48245 - tweak HWPF table cell detection to work across more files</action>
-           <action dev="POI-DEVELOPERS" type="add">48996 - initial support for External Name References in HSSF formula evaluation</action>
-           <action dev="POI-DEVELOPERS" type="fix">46664 - fix up Tab IDs when adding new sheets, so that print areas don't end up invalid</action>
-           <action dev="POI-DEVELOPERS" type="fix">45269 - improve replaceText on HWPF ranges</action>
-           <action dev="POI-DEVELOPERS" type="fix">47815 - correct documentation on what happens when you request a String from a non-string Formula cell</action>
-           <action dev="POI-DEVELOPERS" type="fix">49386 - avoid NPE when extracting OOXML file properties which are dates</action>
-           <action dev="POI-DEVELOPERS" type="fix">49377 - only call DecimalFormat.setRoundingMode on Java 1.6 - it's needed to match excel's rendering of numbers</action>
-           <action dev="POI-DEVELOPERS" type="fix">49378 - correct 1.6ism</action>
-           <action dev="POI-DEVELOPERS" type="add">Parse the HSMF headers chunk if present, and use it to find Dates in text extraction if needed</action>
-           <action dev="POI-DEVELOPERS" type="fix">48494 - detect and support time formats like HH:MM;HH:MM</action>
-           <action dev="POI-DEVELOPERS" type="fix">48494 - have ExcelExtractor make use of HSSFDataFormatter, so that numbers and dates come out closer to how Excel would render them</action>
-           <action dev="POI-DEVELOPERS" type="fix">48494 - have EventBasedExcelExtractor make use of HSSFDataFormatter, so that numbers and dates come out closer to how Excel would render them</action>
-           <action dev="POI-DEVELOPERS" type="fix">49096 - add clone support to Chart begin and end records, to allow cloning of more Chart containing sheets</action>
-           <action dev="POI-DEVELOPERS" type="add">List attachment names in the output of OutlookTextExtractor (to get attachment contents, use ExtractorFactory as normal)</action>
-           <action dev="POI-DEVELOPERS" type="fix">48872 - allow DateFormatter.formatRawCellContents to handle 1904 as well as 1900 dates</action>
-           <action dev="POI-DEVELOPERS" type="fix">48872 - handle MMMMM and elapsed time formatting rules in DataFormatter</action>
-           <action dev="POI-DEVELOPERS" type="fix">48872 - handle zero formatting rules, and better color detection in DataFormatter</action>
-           <action dev="POI-DEVELOPERS" type="fix">48872 - support for more kinds of formatting in DataFormatter</action>
-           <action dev="POI-DEVELOPERS" type="fix">43161 - fixed construction of the DIB picture header</action>
-           <action dev="POI-DEVELOPERS" type="add">49311 - initial support for reading AES-encrypted/write-protected OOXML files</action>
-           <action dev="POI-DEVELOPERS" type="fix">48718 - Make the creation of multiple, un-modified fonts in a row in XSSF match the old HSSF behaviour</action>
-           <action dev="POI-DEVELOPERS" type="fix">44916 - Allow access to the HSSFPatriarch from HSSFSheet once created</action>
-           <action dev="POI-DEVELOPERS" type="add">48779 - Allow you to get straight from a CellStyle to a Color, irrespective of if the Color is indexed or inline-defined</action>
-           <action dev="POI-DEVELOPERS" type="add">48924 - Allow access of the HWPF DateAndTime underlying date values</action>
-           <action dev="POI-DEVELOPERS" type="add">48926 - Initial support for the HWPF revision marks authors list</action>
-           <action dev="POI-DEVELOPERS" type="fix">49160 - Ensure that CTDigSigBlob is included in poi-ooxml jar</action>
-           <action dev="POI-DEVELOPERS" type="fix">49189 - Detect w:tab and w:cr entries in XWPF paragraphs, even when the XSD is silly and maps them to CTEmpty</action>
-           <action dev="POI-DEVELOPERS" type="fix">49273 - Correct handling for Font Character Sets with indicies greater than 127</action>
-           <action dev="POI-DEVELOPERS" type="add">49334 - Track the ValueRangeRecords of charts in HSSFChart, to allow the basic axis operations</action>
-           <action dev="POI-DEVELOPERS" type="add">49242 - Track the LinkDataRecords of charts in HSSFChart</action>
-           <action dev="POI-DEVELOPERS" type="add">Improved performance of XSSFWorkbook.write </action>
-           <action dev="POI-DEVELOPERS" type="fix">48846 - Avoid NPE when finding cell comments</action>
-           <action dev="POI-DEVELOPERS" type="fix">49325 - Ensure that CTPhoneticPr is included in poi-ooxml jar</action>
-           <action dev="POI-DEVELOPERS" type="fix">49191 - Fixed tests failing in non-english locales</action>
-           <action dev="POI-DEVELOPERS" type="add">48432 - Support for XSSF themes</action>
-           <action dev="POI-DEVELOPERS" type="add">49244 - Support for data validation for OOXML format</action>
-           <action dev="POI-DEVELOPERS" type="add">49066 - Worksheet/cell formatting, with view and HTML converter</action>
-           <action dev="POI-DEVELOPERS" type="fix">49020 - Workaround Excel outputting invalid XML in button definitions by not closing BR tags</action>
-           <action dev="POI-DEVELOPERS" type="fix">49050 - Improve performance of AbstractEscherHolderRecord when there are lots of Continue Records</action>
-           <action dev="POI-DEVELOPERS" type="fix">49194 - Correct text size limit for OOXML .xlsx files</action>
-           <action dev="POI-DEVELOPERS" type="fix">49254 - Fix CellUtils.setFont to use the correct type internally</action>
-           <action dev="POI-DEVELOPERS" type="fix">49139 - Properly support 4k big block size in POIFS</action>
-           <action dev="POI-DEVELOPERS" type="fix">48936 - Avoid writing malformed CDATA blocks in sharedStrings.xml</action>
-           <action dev="POI-DEVELOPERS" type="add">49026 - Added implementation for TEXT()  </action>
-           <action dev="POI-DEVELOPERS" type="add">49025 - Added implementation for TRUNC()  </action>
-           <action dev="POI-DEVELOPERS" type="fix">49147 - Properly close internal InputStream in ExtractorFactory#createExtractor(File)</action>
-           <action dev="POI-DEVELOPERS" type="fix">49138 - Fixed locale-sensitive formatters in PackagePropertiesPart</action>
-           <action dev="POI-DEVELOPERS" type="fix">49153 - Ensure that CTVectorVariant is included in poi-ooxml-schemas.jar</action>
-           <action dev="POI-DEVELOPERS" type="add">49146 - Added accessors to CoreProperties.Keywords  </action>
-           <action dev="POI-DEVELOPERS" type="fix">48916 - Propagate parent to parent-aware records decoded from Escher</action>
-           <action dev="POI-DEVELOPERS" type="fix">48485 - Add extra paper size constans to PrintSetup, such as A3, B4 and B5</action>
-           <action dev="POI-DEVELOPERS" type="fix">Make poifs.filesystem.DirectoryNode preserve the original ordering of its files, which HSMF needs to be able to correctly match up chunks</action>
-           <action dev="POI-DEVELOPERS" type="add">Support evaluation of indirect defined names in INDIRECT</action>
-           <action dev="POI-DEVELOPERS" type="fix">43670 - Improve HDGF ChunkV11 separator detection, and short string detection, to solve the "Negative length of ChunkHeader" problem</action>
-           <action dev="POI-DEVELOPERS" type="add">48617 - Optionally allow the overriding of the Locale used by DataFormatter to control how the default number and date formats should look</action>
-           <action dev="POI-DEVELOPERS" type="add">New event based xssf text extractor (XSSFEventBasedExcelExtractor)</action>
-           <action dev="POI-DEVELOPERS" type="add">ExtractorFactory can now be told to prefer Event Based extractors (current Excel only) on a per-thread or overall basis</action>
-           <action dev="POI-DEVELOPERS" type="fix">48544 - avoid failures in XLSX2CSV when shared string table is missing</action>
-           <action dev="POI-DEVELOPERS" type="fix">48571 - properly close all IO streams created in OPCPackage</action>
-           <action dev="POI-DEVELOPERS" type="fix">48572 - always copy all declared inner classes and interfaces when generating poi-ooxml-schemas</action>
-           <action dev="POI-DEVELOPERS" type="add">Low Level record support for the ExtRst (phonetic text) part of Unicode Strings. No usermodel access to it as yet though.</action>
-           <action dev="POI-DEVELOPERS" type="fix">record.UnicodeString has moved to record.common.UnicodeString, to live with the other record-part classes, as it isn't a full record.</action>
-           <action dev="POI-DEVELOPERS" type="add">Avoid creating temporary files when opening OPC packages from input stream</action>
-           <action dev="POI-DEVELOPERS" type="add">Improved how HSMF handles multiple recipients</action>
-           <action dev="POI-DEVELOPERS" type="add">Add PublisherTextExtractor support to ExtractorFactory</action>
-           <action dev="POI-DEVELOPERS" type="add">Add XSLF support for text extraction from tables</action>
-           <action dev="POI-DEVELOPERS" type="add">Support attachments as embeded documents within the new OutlookTextExtractor</action>
-           <action dev="POI-DEVELOPERS" type="add">Add a text extractor (OutlookTextExtractor) to HSMF for simpler extraction of text from .msg files</action>
-           <action dev="POI-DEVELOPERS" type="fix">Some improvements to HSMF parsing of .msg files</action>
-           <action dev="POI-DEVELOPERS" type="fix">Initialise the link type of HSSFHyperLink, so that getType() on it works</action>
-           <action dev="POI-DEVELOPERS" type="fix">48425 - improved performance of DateUtil.isCellDateFormatted()  </action>
-           <action dev="POI-DEVELOPERS" type="fix">47215 - fixed InterfaceEndRecord to tolerate unexpected record contents </action>
-           <action dev="POI-DEVELOPERS" type="fix">48415 - improved javadoc on HSSPicture.resize() </action>
-           <action dev="POI-DEVELOPERS" type="add">added Ant target to install artifacts in local repository </action>
-           <action dev="POI-DEVELOPERS" type="fix">48026 - fixed PageSettingsBlock to allow multiple HeaderFooterRecord records </action>
-           <action dev="POI-DEVELOPERS" type="fix">48202 - fixed CellRangeUtil.mergeCellRanges to work for adjacent cell regions </action>
-           <action dev="POI-DEVELOPERS" type="fix">48339 - fixed ExternalNameRecord to properly distinguish DDE data from OLE data items </action>
-           <action dev="POI-DEVELOPERS" type="fix">47920 - allow editing workbooks embedded into PowerPoint files</action>
-           <action dev="POI-DEVELOPERS" type="add">48343 - added implementation of SUBTOTAL function</action>
-           <action dev="POI-DEVELOPERS" type="fix">Switch to compiling the OOXML Schemas for Java 1.5</action>
+           <action dev="poi-developers" type="fix">49432 - lazy caching of xssfcomment ctcomment objects by reference, to make repeated comment searching faster</action>
+           <action dev="poi-developers" type="fix">better handling of outlook messages in hsmf when there's no recipient email address</action>
+           <action dev="poi-developers" type="fix">when formatting numbers with dataformatter, handle brackets following colours</action>
+           <action dev="poi-developers" type="add">48574 - further xwpf support for tables, paragraphs, including enhanced support for adding new ones</action>
+           <action dev="poi-developers" type="add">48245 - tweak hwpf table cell detection to work across more files</action>
+           <action dev="poi-developers" type="add">48996 - initial support for external name references in hssf formula evaluation</action>
+           <action dev="poi-developers" type="fix">46664 - fix up tab ids when adding new sheets, so that print areas don't end up invalid</action>
+           <action dev="poi-developers" type="fix">45269 - improve replacetext on hwpf ranges</action>
+           <action dev="poi-developers" type="fix">47815 - correct documentation on what happens when you request a string from a non-string formula cell</action>
+           <action dev="poi-developers" type="fix">49386 - avoid npe when extracting ooxml file properties which are dates</action>
+           <action dev="poi-developers" type="fix">49377 - only call decimalformat.setroundingmode on java 1.6 - it's needed to match excel's rendering of numbers</action>
+           <action dev="poi-developers" type="fix">49378 - correct 1.6ism</action>
+           <action dev="poi-developers" type="add">parse the hsmf headers chunk if present, and use it to find dates in text extraction if needed</action>
+           <action dev="poi-developers" type="fix">48494 - detect and support time formats like hh:mm;hh:mm</action>
+           <action dev="poi-developers" type="fix">48494 - have excelextractor make use of hssfdataformatter, so that numbers and dates come out closer to how excel would render them</action>
+           <action dev="poi-developers" type="fix">48494 - have eventbasedexcelextractor make use of hssfdataformatter, so that numbers and dates come out closer to how excel would render them</action>
+           <action dev="poi-developers" type="fix">49096 - add clone support to chart begin and end records, to allow cloning of more chart containing sheets</action>
+           <action dev="poi-developers" type="add">list attachment names in the output of outlooktextextractor (to get attachment contents, use extractorfactory as normal)</action>
+           <action dev="poi-developers" type="fix">48872 - allow dateformatter.formatrawcellcontents to handle 1904 as well as 1900 dates</action>
+           <action dev="poi-developers" type="fix">48872 - handle mmmmm and elapsed time formatting rules in dataformatter</action>
+           <action dev="poi-developers" type="fix">48872 - handle zero formatting rules, and better color detection in dataformatter</action>
+           <action dev="poi-developers" type="fix">48872 - support for more kinds of formatting in dataformatter</action>
+           <action dev="poi-developers" type="fix">43161 - fixed construction of the dib picture header</action>
+           <action dev="poi-developers" type="add">49311 - initial support for reading aes-encrypted/write-protected ooxml files</action>
+           <action dev="poi-developers" type="fix">48718 - make the creation of multiple, un-modified fonts in a row in xssf match the old hssf behaviour</action>
+           <action dev="poi-developers" type="fix">44916 - allow access to the hssfpatriarch from hssfsheet once created</action>
+           <action dev="poi-developers" type="add">48779 - allow you to get straight from a cellstyle to a color, irrespective of if the color is indexed or inline-defined</action>
+           <action dev="poi-developers" type="add">48924 - allow access of the hwpf dateandtime underlying date values</action>
+           <action dev="poi-developers" type="add">48926 - initial support for the hwpf revision marks authors list</action>
+           <action dev="poi-developers" type="fix">49160 - ensure that ctdigsigblob is included in poi-ooxml jar</action>
+           <action dev="poi-developers" type="fix">49189 - detect w:tab and w:cr entries in xwpf paragraphs, even when the xsd is silly and maps them to ctempty</action>
+           <action dev="poi-developers" type="fix">49273 - correct handling for font character sets with indicies greater than 127</action>
+           <action dev="poi-developers" type="add">49334 - track the valuerangerecords of charts in hssfchart, to allow the basic axis operations</action>
+           <action dev="poi-developers" type="add">49242 - track the linkdatarecords of charts in hssfchart</action>
+           <action dev="poi-developers" type="add">improved performance of xssfworkbook.write </action>
+           <action dev="poi-developers" type="fix">48846 - avoid npe when finding cell comments</action>
+           <action dev="poi-developers" type="fix">49325 - ensure that ctphoneticpr is included in poi-ooxml jar</action>
+           <action dev="poi-developers" type="fix">49191 - fixed tests failing in non-english locales</action>
+           <action dev="poi-developers" type="add">48432 - support for xssf themes</action>
+           <action dev="poi-developers" type="add">49244 - support for data validation for ooxml format</action>
+           <action dev="poi-developers" type="add">49066 - worksheet/cell formatting, with view and html converter</action>
+           <action dev="poi-developers" type="fix">49020 - workaround excel outputting invalid xml in button definitions by not closing br tags</action>
+           <action dev="poi-developers" type="fix">49050 - improve performance of abstractescherholderrecord when there are lots of continue records</action>
+           <action dev="poi-developers" type="fix">49194 - correct text size limit for ooxml .xlsx files</action>
+           <action dev="poi-developers" type="fix">49254 - fix cellutils.setfont to use the correct type internally</action>
+           <action dev="poi-developers" type="fix">49139 - properly support 4k big block size in poifs</action>
+           <action dev="poi-developers" type="fix">48936 - avoid writing malformed cdata blocks in sharedstrings.xml</action>
+           <action dev="poi-developers" type="add">49026 - added implementation for text()  </action>
+           <action dev="poi-developers" type="add">49025 - added implementation for trunc()  </action>
+           <action dev="poi-developers" type="fix">49147 - properly close internal inputstream in extractorfactory#createextractor(file)</action>
+           <action dev="poi-developers" type="fix">49138 - fixed locale-sensitive formatters in packagepropertiespart</action>
+           <action dev="poi-developers" type="fix">49153 - ensure that ctvectorvariant is included in poi-ooxml-schemas.jar</action>
+           <action dev="poi-developers" type="add">49146 - added accessors to coreproperties.keywords  </action>
+           <action dev="poi-developers" type="fix">48916 - propagate parent to parent-aware records decoded from escher</action>
+           <action dev="poi-developers" type="fix">48485 - add extra paper size constans to printsetup, such as a3, b4 and b5</action>
+           <action dev="poi-developers" type="fix">make poifs.filesystem.directorynode preserve the original ordering of its files, which hsmf needs to be able to correctly match up chunks</action>
+           <action dev="poi-developers" type="add">support evaluation of indirect defined names in indirect</action>
+           <action dev="poi-developers" type="fix">43670 - improve hdgf chunkv11 separator detection, and short string detection, to solve the "negative length of chunkheader" problem</action>
+           <action dev="poi-developers" type="add">48617 - optionally allow the overriding of the locale used by dataformatter to control how the default number and date formats should look</action>
+           <action dev="poi-developers" type="add">new event based xssf text extractor (xssfeventbasedexcelextractor)</action>
+           <action dev="poi-developers" type="add">extractorfactory can now be told to prefer event based extractors (current excel only) on a per-thread or overall basis</action>
+           <action dev="poi-developers" type="fix">48544 - avoid failures in xlsx2csv when shared string table is missing</action>
+           <action dev="poi-developers" type="fix">48571 - properly close all io streams created in opcpackage</action>
+           <action dev="poi-developers" type="fix">48572 - always copy all declared inner classes and interfaces when generating poi-ooxml-schemas</action>
+           <action dev="poi-developers" type="add">low level record support for the extrst (phonetic text) part of unicode strings. no usermodel access to it as yet though.</action>
+           <action dev="poi-developers" type="fix">record.unicodestring has moved to record.common.unicodestring, to live with the other record-part classes, as it isn't a full record.</action>
+           <action dev="poi-developers" type="add">avoid creating temporary files when opening opc packages from input stream</action>
+           <action dev="poi-developers" type="add">improved how hsmf handles multiple recipients</action>
+           <action dev="poi-developers" type="add">add publishertextextractor support to extractorfactory</action>
+           <action dev="poi-developers" type="add">add xslf support for text extraction from tables</action>
+           <action dev="poi-developers" type="add">support attachments as embeded documents within the new outlooktextextractor</action>
+           <action dev="poi-developers" type="add">add a text extractor (outlooktextextractor) to hsmf for simpler extraction of text from .msg files</action>
+           <action dev="poi-developers" type="fix">some improvements to hsmf parsing of .msg files</action>
+           <action dev="poi-developers" type="fix">initialise the link type of hssfhyperlink, so that gettype() on it works</action>
+           <action dev="poi-developers" type="fix">48425 - improved performance of dateutil.iscelldateformatted()  </action>
+           <action dev="poi-developers" type="fix">47215 - fixed interfaceendrecord to tolerate unexpected record contents </action>
+           <action dev="poi-developers" type="fix">48415 - improved javadoc on hsspicture.resize() </action>
+           <action dev="poi-developers" type="add">added ant target to install artifacts in local repository </action>
+           <action dev="poi-developers" type="fix">48026 - fixed pagesettingsblock to allow multiple headerfooterrecord records </action>
+           <action dev="poi-developers" type="fix">48202 - fixed cellrangeutil.mergecellranges to work for adjacent cell regions </action>
+           <action dev="poi-developers" type="fix">48339 - fixed externalnamerecord to properly distinguish dde data from ole data items </action>
+           <action dev="poi-developers" type="fix">47920 - allow editing workbooks embedded into powerpoint files</action>
+           <action dev="poi-developers" type="add">48343 - added implementation of subtotal function</action>
+           <action dev="poi-developers" type="fix">switch to compiling the ooxml schemas for java 1.5</action>
         </release>
         <release version="3.6" date="2009-12-14">
-           <action dev="POI-DEVELOPERS" type="fix">48332 - fixed XSSFSheet autoSizeColumn() to tolerate empty RichTextString</action>
-           <action dev="POI-DEVELOPERS" type="fix">48332 - fixed ColumnInfoRecord to tolerate missing reserved field</action>
-           <action dev="POI-DEVELOPERS" type="fix">47701 - fixed RecordFormatException when reading list subrecords (LbsDataSubRecord)</action>
-           <action dev="POI-DEVELOPERS" type="add"> memory usage optimization in XSSF - avoid creating parentless xml beans</action>
-           <action dev="POI-DEVELOPERS" type="fix">47188 - avoid corruption of workbook when adding cell comments </action>
-           <action dev="POI-DEVELOPERS" type="fix">48106 - improved work with cell comments in XSSF</action>
-           <action dev="POI-DEVELOPERS" type="add">Add support for creating SummaryInformation and DocumentSummaryInformation properties
-                   on POIDocuments that don't have them, via POIDocument.createInformationProperties()</action>
-           <action dev="POI-DEVELOPERS" type="fix">48180 - be more forgiving of short chart records, which skip some unused fields</action>
-           <action dev="POI-DEVELOPERS" type="fix">48274 - fix erronious wrapping of byte colours in HSSFPalette.findSimilarColor</action>
-           <action dev="POI-DEVELOPERS" type="fix">48269 - fix fetching of error codes from XSSF formula cells</action>
-           <action dev="POI-DEVELOPERS" type="fix">48229 - fixed javadoc for  HSSFSheet.setColumnWidth and XSSFSheet setColumnWidth </action>
-           <action dev="POI-DEVELOPERS" type="fix">47757 - fixed XLSX2CSV to avoid exception when processing cells with multiple "t" elements</action>
-           <action dev="POI-DEVELOPERS" type="add">48195 - short-circuit evaluation of IF() and CHOOSE()</action>
-           <action dev="POI-DEVELOPERS" type="add">48161 - support for text extraction from PPT master slides</action>
-           <action dev="POI-DEVELOPERS" type="add">47970 - added a method to set arabic mode in HSSFSheet</action>
-           <action dev="POI-DEVELOPERS" type="fix">48134 - release system resources when using Picture.resize()</action>
-           <action dev="POI-DEVELOPERS" type="fix">48087 - avoid NPE in XSSFChartSheet  when calling methods of the superclass</action>
-           <action dev="POI-DEVELOPERS" type="fix">48038 - handle reading HWPF stylesheets from non zero offsets</action>
-           <action dev="POI-DEVELOPERS" type="add">When running the "compile-ooxml-xsds" ant task, also generate the source jar for the OOXML Schemas</action>
-           <action dev="POI-DEVELOPERS" type="fix">45672 - improve handling by MissingRecordAwareHSSFListener of records that cover multiple cells (MulBlankRecord and MulRKRecord)</action>
-           <action dev="POI-DEVELOPERS" type="fix">48096 - relaxed validation check in RecalcIdRecord</action>
-           <action dev="POI-DEVELOPERS" type="fix">48085 - improved error checking in BlockAllocationTableReader to trap unreasonable field values</action>
-           <action dev="POI-DEVELOPERS" type="fix">47924 - fixed logic for matching cells and comments in HSSFCell.getCellComment()</action>
-           <action dev="POI-DEVELOPERS" type="add">47942 - added implementation of protection features to XLSX and DOCX files</action>
-           <action dev="POI-DEVELOPERS" type="fix">48070 - preserve leading and trailing white spaces in XSSFRichTextString</action>
-           <action dev="POI-DEVELOPERS" type="add">48044 - added implementation for CountBlank function</action>
-           <action dev="POI-DEVELOPERS" type="fix">48036 - added IntersectionEval to allow evaluation of the intersection formula operator</action>
-           <action dev="POI-DEVELOPERS" type="fix">47999 - avoid un-needed call to the JVM Garbage Collector when working on OOXML OPC Packages</action>
-           <action dev="POI-DEVELOPERS" type="add">47922 - added example HSMF application that converts a .msg file to text and extracts attachments</action>
-           <action dev="POI-DEVELOPERS" type="add">47903 - added Ant target to compile scratchpad examples</action>
-           <action dev="POI-DEVELOPERS" type="add">47839 - improved API for OOXML custom properties</action>
-           <action dev="POI-DEVELOPERS" type="fix">47862 - fixed XSSFSheet.setColumnWidth to handle columns included in a column span</action>
-           <action dev="POI-DEVELOPERS" type="fix">47804 - fixed XSSFSheet.setColumnHidden to handle columns included in a column span</action>
-           <action dev="POI-DEVELOPERS" type="fix">47889 - fixed XSSFCell.getStringCellValue() to properly handle cached formula results</action>
-        </release>
-        <release version="3.5-FINAL" date="2009-09-28">
-           <action dev="POI-DEVELOPERS" type="fix">47747 - fixed logic for locating shared formula records</action>
-           <action dev="POI-DEVELOPERS" type="add">47809 - Improved work with user-defined functions</action>
-           <action dev="POI-DEVELOPERS" type="fix">47581 - fixed XSSFSheet.setColumnWidth to produce XML compatible with Mac Excel 2008</action>
-           <action dev="POI-DEVELOPERS" type="fix">47734 - removed unnecessary svn:executable flag from files in SVN trunk</action>
-           <action dev="POI-DEVELOPERS" type="fix">47543 - added javadoc how to avoid Excel crash when creating too many HSSFRichTextString cells</action>
-           <action dev="POI-DEVELOPERS" type="fix">47813 - fixed problems with XSSFWorkbook.removeSheetAt when workbook contains chart</action>
-           <action dev="POI-DEVELOPERS" type="fix">47737 - adjust sheet indices of named ranges when deleting sheets</action>
-           <action dev="POI-DEVELOPERS" type="fix">47770 - built-in positive formats don't need starting '('</action>
-           <action dev="POI-DEVELOPERS" type="add">47771 - Added method setFunction(boolean) for defined names</action>
-           <action dev="POI-DEVELOPERS" type="add">47768 - Implementation of Excel "Days360" and "Npv" functions</action>
-           <action dev="POI-DEVELOPERS" type="fix">47751 - Do not allow HSSF's cell text longer than 32,767 characters</action>
-           <action dev="POI-DEVELOPERS" type="add">47757 - Added an example demonstrating how to convert an XLSX workbook to CSV</action>
-           <action dev="POI-DEVELOPERS" type="fix">44770 - Fixed PPT parser to tolerate Comment2000 containers with missing comment text</action>
-           <action dev="POI-DEVELOPERS" type="fix">47773 - Fix for extraction paragraphs and sections from headers/footers with XWPFWordExtractor</action>
-           <action dev="POI-DEVELOPERS" type="fix">47727 - Support for extraction of header / footer images in HWPF</action>
-           <action dev="POI-DEVELOPERS" type="fix">moved all test data to a top-level directory</action>
+           <action dev="poi-developers" type="fix">48332 - fixed xssfsheet autosizecolumn() to tolerate empty richtextstring</action>
+           <action dev="poi-developers" type="fix">48332 - fixed columninforecord to tolerate missing reserved field</action>
+           <action dev="poi-developers" type="fix">47701 - fixed recordformatexception when reading list subrecords (lbsdatasubrecord)</action>
+           <action dev="poi-developers" type="add"> memory usage optimization in xssf - avoid creating parentless xml beans</action>
+           <action dev="poi-developers" type="fix">47188 - avoid corruption of workbook when adding cell comments </action>
+           <action dev="poi-developers" type="fix">48106 - improved work with cell comments in xssf</action>
+           <action dev="poi-developers" type="add">add support for creating summaryinformation and documentsummaryinformation properties
+                   on poidocuments that don't have them, via poidocument.createinformationproperties()</action>
+           <action dev="poi-developers" type="fix">48180 - be more forgiving of short chart records, which skip some unused fields</action>
+           <action dev="poi-developers" type="fix">48274 - fix erronious wrapping of byte colours in hssfpalette.findsimilarcolor</action>
+           <action dev="poi-developers" type="fix">48269 - fix fetching of error codes from xssf formula cells</action>
+           <action dev="poi-developers" type="fix">48229 - fixed javadoc for  hssfsheet.setcolumnwidth and xssfsheet setcolumnwidth </action>
+           <action dev="poi-developers" type="fix">47757 - fixed xlsx2csv to avoid exception when processing cells with multiple "t" elements</action>
+           <action dev="poi-developers" type="add">48195 - short-circuit evaluation of if() and choose()</action>
+           <action dev="poi-developers" type="add">48161 - support for text extraction from ppt master slides</action>
+           <action dev="poi-developers" type="add">47970 - added a method to set arabic mode in hssfsheet</action>
+           <action dev="poi-developers" type="fix">48134 - release system resources when using picture.resize()</action>
+           <action dev="poi-developers" type="fix">48087 - avoid npe in xssfchartsheet  when calling methods of the superclass</action>
+           <action dev="poi-developers" type="fix">48038 - handle reading hwpf stylesheets from non zero offsets</action>
+           <action dev="poi-developers" type="add">when running the "compile-ooxml-xsds" ant task, also generate the source jar for the ooxml schemas</action>
+           <action dev="poi-developers" type="fix">45672 - improve handling by missingrecordawarehssflistener of records that cover multiple cells (mulblankrecord and mulrkrecord)</action>
+           <action dev="poi-developers" type="fix">48096 - relaxed validation check in recalcidrecord</action>
+           <action dev="poi-developers" type="fix">48085 - improved error checking in blockallocationtablereader to trap unreasonable field values</action>
+           <action dev="poi-developers" type="fix">47924 - fixed logic for matching cells and comments in hssfcell.getcellcomment()</action>
+           <action dev="poi-developers" type="add">47942 - added implementation of protection features to xlsx and docx files</action>
+           <action dev="poi-developers" type="fix">48070 - preserve leading and trailing white spaces in xssfrichtextstring</action>
+           <action dev="poi-developers" type="add">48044 - added implementation for countblank function</action>
+           <action dev="poi-developers" type="fix">48036 - added intersectioneval to allow evaluation of the intersection formula operator</action>
+           <action dev="poi-developers" type="fix">47999 - avoid un-needed call to the jvm garbage collector when working on ooxml opc packages</action>
+           <action dev="poi-developers" type="add">47922 - added example hsmf application that converts a .msg file to text and extracts attachments</action>
+           <action dev="poi-developers" type="add">47903 - added ant target to compile scratchpad examples</action>
+           <action dev="poi-developers" type="add">47839 - improved api for ooxml custom properties</action>
+           <action dev="poi-developers" type="fix">47862 - fixed xssfsheet.setcolumnwidth to handle columns included in a column span</action>
+           <action dev="poi-developers" type="fix">47804 - fixed xssfsheet.setcolumnhidden to handle columns included in a column span</action>
+           <action dev="poi-developers" type="fix">47889 - fixed xssfcell.getstringcellvalue() to properly handle cached formula results</action>
+        </release>
+        <release version="3.5-final" date="2009-09-28">
+           <action dev="poi-developers" type="fix">47747 - fixed logic for locating shared formula records</action>
+           <action dev="poi-developers" type="add">47809 - improved work with user-defined functions</action>
+           <action dev="poi-developers" type="fix">47581 - fixed xssfsheet.setcolumnwidth to produce xml compatible with mac excel 2008</action>
+           <action dev="poi-developers" type="fix">47734 - removed unnecessary svn:executable flag from files in svn trunk</action>
+           <action dev="poi-developers" type="fix">47543 - added javadoc how to avoid excel crash when creating too many hssfrichtextstring cells</action>
+           <action dev="poi-developers" type="fix">47813 - fixed problems with xssfworkbook.removesheetat when workbook contains chart</action>
+           <action dev="poi-developers" type="fix">47737 - adjust sheet indices of named ranges when deleting sheets</action>
+           <action dev="poi-developers" type="fix">47770 - built-in positive formats don't need starting '('</action>
+           <action dev="poi-developers" type="add">47771 - added method setfunction(boolean) for defined names</action>
+           <action dev="poi-developers" type="add">47768 - implementation of excel "days360" and "npv" functions</action>
+           <action dev="poi-developers" type="fix">47751 - do not allow hssf's cell text longer than 32,767 characters</action>
+           <action dev="poi-developers" type="add">47757 - added an example demonstrating how to convert an xlsx workbook to csv</action>
+           <action dev="poi-developers" type="fix">44770 - fixed ppt parser to tolerate comment2000 containers with missing comment text</action>
+           <action dev="poi-developers" type="fix">47773 - fix for extraction paragraphs and sections from headers/footers with xwpfwordextractor</action>
+           <action dev="poi-developers" type="fix">47727 - support for extraction of header / footer images in hwpf</action>
+           <action dev="poi-developers" type="fix">moved all test data to a top-level directory</action>
            <action dev="POI-DEVELOPERS" type="add">47721 - Added implementation for INDIRECT()</action>
            <action dev="POI-DEVELOPERS" type="add">45583 - Avoid exception when reading ClipboardData packet in OLE property sets</action>
            <action dev="POI-DEVELOPERS" type="add">47652 - Added support for reading encrypted workbooks</action>
index a50ac599732ed1e52d95b669cb53d8f15094cef4..d7be3486507ed9884a73fe482aa74f29b9b47d65 100644 (file)
@@ -187,6 +187,8 @@ public final class FunctionEval {
 
                retval[298] = new Odd();
 
+        retval[300] = NumericFunction.POISSON;
+
                retval[303] = new Sumxmy2();
                retval[304] = new Sumx2my2();
                retval[305] = new Sumx2py2();
index bf69e6181fb395eba00b0d14487753c295d9c115..8315159be27994ae0bd386d16d0a1924105a71ed 100644 (file)
 
 package org.apache.poi.hssf.record.formula.functions;
 
-import org.apache.poi.hssf.record.formula.eval.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.EvaluationException;
-import org.apache.poi.hssf.record.formula.eval.NumberEval;
-import org.apache.poi.hssf.record.formula.eval.OperandResolver;
-import org.apache.poi.hssf.record.formula.eval.ValueEval;
+import org.apache.poi.hssf.record.formula.eval.*;
 
 /**
  * @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
@@ -395,4 +391,105 @@ public abstract class NumericFunction implements Function {
                        return new NumberEval(Math.random());
                }
        };
+    public static final Function POISSON = new Fixed3ArgFunction() {
+
+        private final static double DEFAULT_RETURN_RESULT =1;
+        
+        /**
+         * This checks is x = 0 and the mean = 0.
+         * Excel currently returns the value 1 where as the
+         * maths common implementation will error.
+         * @param x  The number.
+         * @param mean The mean.
+         * @return If a default value should be returned.
+         */
+        private boolean isDefaultResult(double x, double mean) {
+
+            if ( x == 0 && mean == 0 ) {
+                return true;
+            }
+            return false;
+        }
+
+        private boolean checkArgument(double aDouble) throws EvaluationException {
+
+            NumericFunction.checkValue(aDouble);
+
+            // make sure that the number is positive
+            if (aDouble < 0) {
+                throw new EvaluationException(ErrorEval.NUM_ERROR);
+            }
+            
+            return true;
+        }
+
+        private double probability(int k, double lambda) {
+            return Math.pow(lambda, k) * Math.exp(-lambda) / factorial(k);
+        }
+
+        private double cumulativeProbability(int x, double lambda) {
+            double result = 0;
+            for(int k = 0; k <= x; k++){
+                result += probability(k, lambda);
+            }
+            return result;
+        }
+
+        /** All long-representable factorials */
+        private final long[] FACTORIALS = new long[] {
+                           1l,                  1l,                   2l,
+                           6l,                 24l,                 120l,
+                         720l,               5040l,               40320l,
+                      362880l,            3628800l,            39916800l,
+                   479001600l,         6227020800l,         87178291200l,
+               1307674368000l,     20922789888000l,     355687428096000l,
+            6402373705728000l, 121645100408832000l, 2432902008176640000l };
+
+
+        public long factorial(final int n) {
+            if (n < 0 || n > 20) {
+                throw new IllegalArgumentException("Valid argument should be in the range [0..20]");
+            }
+            return FACTORIALS[n];
+        }
+
+        public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1, ValueEval arg2) {
+
+            // arguments/result for this function
+            double mean=0;
+            double x=0;
+            boolean cumulative = ((BoolEval)arg2).getBooleanValue();
+            double result=0;
+
+            try {
+                               x = NumericFunction.singleOperandEvaluate(arg0, srcRowIndex, srcColumnIndex);
+                               mean = NumericFunction.singleOperandEvaluate(arg1, srcRowIndex, srcColumnIndex);
+
+                // check for default result : excel implementation for 0,0
+                // is different to Math Common.
+                if (isDefaultResult(x,mean)) {
+                    return new NumberEval(DEFAULT_RETURN_RESULT); 
+                }
+                // check the arguments : as per excel function def
+                checkArgument(x);
+                checkArgument(mean);
+
+                // truncate x : as per excel function def
+                if ( cumulative ) {
+                    result = cumulativeProbability((int)x, mean);
+                } else {
+                    result = probability((int)x, mean);
+                }
+
+                // check the result
+                NumericFunction.checkValue(result);
+
+                       } catch (EvaluationException e) {
+                               return e.getErrorEval();
+                       }
+            
+            return new NumberEval(result);
+
+        }
+    };
 }
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestPoisson.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestPoisson.java
new file mode 100644 (file)
index 0000000..e086b0e
--- /dev/null
@@ -0,0 +1,95 @@
+package org.apache.poi.hssf.record.formula.functions;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.hssf.record.formula.eval.BoolEval;
+import org.apache.poi.hssf.record.formula.eval.ErrorEval;
+import org.apache.poi.hssf.record.formula.eval.NumberEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
+
+
+/**
+ * Tests for Excel function POISSON(x,mean,cumulative)
+ * @author Kalpesh Parmar
+ */
+public class TestPoisson extends TestCase {
+
+    private static final double DELTA = 1E-15;
+
+    private static ValueEval invokePoisson(double x, double mean, boolean cumulative)
+    {
+
+        ValueEval[] valueEvals = new ValueEval[3];
+        valueEvals[0] = new NumberEval(x);
+        valueEvals[1] = new NumberEval(mean);
+        valueEvals[2] = BoolEval.valueOf(cumulative);
+
+        return NumericFunction.POISSON.evaluate(valueEvals,-1,-1);
+       }
+
+    public void testCumulativeProbability()
+    {
+        double x = 1;
+        double mean = 0.2;
+        double result = 0.9824769036935787; // known result
+
+        NumberEval myResult = (NumberEval)invokePoisson(x,mean,true);
+
+        assertEquals(myResult.getNumberValue(), result, DELTA);
+    }
+
+    public void testNonCumulativeProbability()
+    {
+        double x = 0;
+        double mean = 0.2;
+        double result = 0.8187307530779818; // known result
+        
+        NumberEval myResult = (NumberEval)invokePoisson(x,mean,false);
+
+        assertEquals(myResult.getNumberValue(), result, DELTA);
+    }
+
+    public void testNegativeMean()
+    {
+        double x = 0;
+        double mean = -0.2;
+
+        ErrorEval myResult = (ErrorEval)invokePoisson(x,mean,false);
+
+        assertEquals(ErrorEval.NUM_ERROR.getErrorCode(), myResult.getErrorCode());
+    }
+
+    public void testNegativeX()
+    {
+        double x = -1;
+        double mean = 0.2;
+
+        ErrorEval myResult = (ErrorEval)invokePoisson(x,mean,false);
+
+        assertEquals(ErrorEval.NUM_ERROR.getErrorCode(), myResult.getErrorCode());    
+    }
+
+
+
+    public void testXAsDecimalNumber()
+    {
+        double x = 1.1;
+        double mean = 0.2;
+        double result = 0.9824769036935787; // known result
+
+        NumberEval myResult = (NumberEval)invokePoisson(x,mean,true);
+
+        assertEquals(myResult.getNumberValue(), result, DELTA);
+    }
+
+    public void testXZeroMeanZero()
+    {
+        double x = 0;
+        double mean = 0;
+        double result = 1; // known result in excel
+
+        NumberEval myResult = (NumberEval)invokePoisson(x,mean,true);
+
+        assertEquals(myResult.getNumberValue(), result, DELTA);
+    }
+}