1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17/* ---- includes ----------------------------------------------------------- */ 18 19#include "b_BasicEm/Functions.h" 20#include "b_BasicEm/APh.h" 21#include "b_BasicEm/Complex.h" 22#include "b_BasicEm/Math.h" 23 24/* ------------------------------------------------------------------------- */ 25 26/* ========================================================================= */ 27/* */ 28/* ---- \ghd{ auxiliary functions } ---------------------------------------- */ 29/* */ 30/* ========================================================================= */ 31 32/* ------------------------------------------------------------------------- */ 33 34/* ========================================================================= */ 35/* */ 36/* ---- \ghd{ constructor / destructor } ----------------------------------- */ 37/* */ 38/* ========================================================================= */ 39 40/* ------------------------------------------------------------------------- */ 41 42/* ========================================================================= */ 43/* */ 44/* ---- \ghd{ operators } -------------------------------------------------- */ 45/* */ 46/* ========================================================================= */ 47 48flag bbs_APh_equal( struct bbs_APh aph1A, 49 struct bbs_APh aph2A ) 50{ 51 return ( aph1A.absE == aph2A.absE ) && ( aph1A.phaseE == aph2A.phaseE ); 52} 53 54/* ------------------------------------------------------------------------- */ 55 56/* ========================================================================= */ 57/* */ 58/* ---- \ghd{ query functions } -------------------------------------------- */ 59/* */ 60/* ========================================================================= */ 61 62/* ------------------------------------------------------------------------- */ 63 64/* ========================================================================= */ 65/* */ 66/* ---- \ghd{ modify functions } ------------------------------------------- */ 67/* */ 68/* ========================================================================= */ 69 70/* ------------------------------------------------------------------------- */ 71 72/* ========================================================================= */ 73/* */ 74/* ---- \ghd{ I/O } -------------------------------------------------------- */ 75/* */ 76/* ========================================================================= */ 77 78/* ------------------------------------------------------------------------- */ 79 80uint32 bbs_APh_memSize( struct bbs_Context* cpA, 81 struct bbs_APh aPhA ) 82{ 83 return bbs_SIZEOF16( aPhA.absE ) + bbs_SIZEOF16( aPhA.phaseE ); 84} 85 86/* ------------------------------------------------------------------------- */ 87 88uint32 bbs_APh_memWrite( struct bbs_Context* cpA, 89 const struct bbs_APh* ptrA, 90 uint16* memPtrA ) 91{ 92 memPtrA += bbs_memWrite16( &ptrA->absE, memPtrA ); 93 memPtrA += bbs_memWrite16( &ptrA->phaseE, memPtrA ); 94 return bbs_APh_memSize( cpA, *ptrA ); 95} 96 97/* ------------------------------------------------------------------------- */ 98 99uint32 bbs_APh_memRead( struct bbs_Context* cpA, 100 struct bbs_APh* ptrA, 101 const uint16* memPtrA ) 102{ 103 if( bbs_Context_error( cpA ) ) return 0; 104 memPtrA += bbs_memRead16( &ptrA->absE, memPtrA ); 105 memPtrA += bbs_memRead16( &ptrA->phaseE, memPtrA ); 106 return bbs_APh_memSize( cpA, *ptrA ); 107} 108 109/* ------------------------------------------------------------------------- */ 110 111/* ========================================================================= */ 112/* */ 113/* ---- \ghd{ exec functions } --------------------------------------------- */ 114/* */ 115/* ========================================================================= */ 116 117struct bbs_APh bbs_APh_conj( const struct bbs_APh aPhA ) 118{ 119 struct bbs_APh aphL; 120 aphL.absE = aPhA.absE; 121 aphL.phaseE = - aPhA.phaseE; 122 return aphL; 123} 124 125/* ------------------------------------------------------------------------- */ 126 127void bbs_APh_importComplex( struct bbs_APh* dstPtrA, 128 const struct bbs_Complex* srcPtrA ) 129{ 130 dstPtrA->absE = bbs_sqrt32( ( int32 ) srcPtrA->realE * srcPtrA->realE + ( int32 ) srcPtrA->imagE * srcPtrA->imagE ); 131 dstPtrA->phaseE = bbs_phase16( srcPtrA->realE, srcPtrA->imagE ); 132} 133 134/* ========================================================================= */ 135 136 137