text:
Copied to
clipboard

## G = Dic15⋊4Q8order 480 = 25·3·5

### 2nd semidirect product of Dic15 and Q8 acting via Q8/C4=C2

Series: Derived Chief Lower central Upper central

 Derived series C1 — C2×C30 — Dic15⋊4Q8
 Chief series C1 — C5 — C15 — C30 — C2×C30 — C2×Dic15 — C4×Dic15 — Dic15⋊4Q8
 Lower central C15 — C2×C30 — Dic15⋊4Q8
 Upper central C1 — C22 — C2×Q8

Generators and relations for Dic154Q8
G = < a,b,c,d | a30=c4=1, b2=a15, d2=c2, bab-1=a-1, ac=ca, ad=da, cbc-1=a15b, bd=db, dcd-1=c-1 >

Subgroups: 628 in 136 conjugacy classes, 59 normal (23 characteristic)
C1, C2, C2, C3, C4, C4, C22, C5, C6, C6, C2×C4, C2×C4, C2×C4, Q8, C10, C10, Dic3, C12, C12, C2×C6, C15, C42, C4⋊C4, C2×Q8, C2×Q8, Dic5, C20, C20, C2×C10, Dic6, C2×Dic3, C2×C12, C2×C12, C3×Q8, C30, C30, C4⋊Q8, Dic10, C2×Dic5, C2×C20, C2×C20, C5×Q8, C4×Dic3, Dic3⋊C4, C2×Dic6, C6×Q8, Dic15, Dic15, C60, C60, C2×C30, C4×Dic5, C10.D4, C2×Dic10, Q8×C10, Dic3⋊Q8, Dic30, C2×Dic15, C2×C60, C2×C60, Q8×C15, Dic5⋊Q8, C4×Dic15, C30.4Q8, C2×Dic30, Q8×C30, Dic154Q8
Quotients: C1, C2, C22, S3, D4, Q8, C23, D5, D6, C2×D4, C2×Q8, D10, C3⋊D4, C22×S3, D15, C4⋊Q8, C5⋊D4, C22×D5, S3×Q8, C2×C3⋊D4, D30, Q8×D5, C2×C5⋊D4, Dic3⋊Q8, C157D4, C22×D15, Dic5⋊Q8, Q8×D15, C2×C157D4, Dic154Q8

Smallest permutation representation of Dic154Q8
Regular action on 480 points
Generators in S480
(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30)(31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60)(61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90)(91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120)(121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150)(151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180)(181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210)(211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240)(241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270)(271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300)(301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330)(331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360)(361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390)(391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420)(421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450)(451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480)
(1 253 16 268)(2 252 17 267)(3 251 18 266)(4 250 19 265)(5 249 20 264)(6 248 21 263)(7 247 22 262)(8 246 23 261)(9 245 24 260)(10 244 25 259)(11 243 26 258)(12 242 27 257)(13 241 28 256)(14 270 29 255)(15 269 30 254)(31 165 46 180)(32 164 47 179)(33 163 48 178)(34 162 49 177)(35 161 50 176)(36 160 51 175)(37 159 52 174)(38 158 53 173)(39 157 54 172)(40 156 55 171)(41 155 56 170)(42 154 57 169)(43 153 58 168)(44 152 59 167)(45 151 60 166)(61 361 76 376)(62 390 77 375)(63 389 78 374)(64 388 79 373)(65 387 80 372)(66 386 81 371)(67 385 82 370)(68 384 83 369)(69 383 84 368)(70 382 85 367)(71 381 86 366)(72 380 87 365)(73 379 88 364)(74 378 89 363)(75 377 90 362)(91 290 106 275)(92 289 107 274)(93 288 108 273)(94 287 109 272)(95 286 110 271)(96 285 111 300)(97 284 112 299)(98 283 113 298)(99 282 114 297)(100 281 115 296)(101 280 116 295)(102 279 117 294)(103 278 118 293)(104 277 119 292)(105 276 120 291)(121 437 136 422)(122 436 137 421)(123 435 138 450)(124 434 139 449)(125 433 140 448)(126 432 141 447)(127 431 142 446)(128 430 143 445)(129 429 144 444)(130 428 145 443)(131 427 146 442)(132 426 147 441)(133 425 148 440)(134 424 149 439)(135 423 150 438)(181 336 196 351)(182 335 197 350)(183 334 198 349)(184 333 199 348)(185 332 200 347)(186 331 201 346)(187 360 202 345)(188 359 203 344)(189 358 204 343)(190 357 205 342)(191 356 206 341)(192 355 207 340)(193 354 208 339)(194 353 209 338)(195 352 210 337)(211 306 226 321)(212 305 227 320)(213 304 228 319)(214 303 229 318)(215 302 230 317)(216 301 231 316)(217 330 232 315)(218 329 233 314)(219 328 234 313)(220 327 235 312)(221 326 236 311)(222 325 237 310)(223 324 238 309)(224 323 239 308)(225 322 240 307)(391 460 406 475)(392 459 407 474)(393 458 408 473)(394 457 409 472)(395 456 410 471)(396 455 411 470)(397 454 412 469)(398 453 413 468)(399 452 414 467)(400 451 415 466)(401 480 416 465)(402 479 417 464)(403 478 418 463)(404 477 419 462)(405 476 420 461)
(1 356 283 422)(2 357 284 423)(3 358 285 424)(4 359 286 425)(5 360 287 426)(6 331 288 427)(7 332 289 428)(8 333 290 429)(9 334 291 430)(10 335 292 431)(11 336 293 432)(12 337 294 433)(13 338 295 434)(14 339 296 435)(15 340 297 436)(16 341 298 437)(17 342 299 438)(18 343 300 439)(19 344 271 440)(20 345 272 441)(21 346 273 442)(22 347 274 443)(23 348 275 444)(24 349 276 445)(25 350 277 446)(26 351 278 447)(27 352 279 448)(28 353 280 449)(29 354 281 450)(30 355 282 421)(31 324 380 391)(32 325 381 392)(33 326 382 393)(34 327 383 394)(35 328 384 395)(36 329 385 396)(37 330 386 397)(38 301 387 398)(39 302 388 399)(40 303 389 400)(41 304 390 401)(42 305 361 402)(43 306 362 403)(44 307 363 404)(45 308 364 405)(46 309 365 406)(47 310 366 407)(48 311 367 408)(49 312 368 409)(50 313 369 410)(51 314 370 411)(52 315 371 412)(53 316 372 413)(54 317 373 414)(55 318 374 415)(56 319 375 416)(57 320 376 417)(58 321 377 418)(59 322 378 419)(60 323 379 420)(61 479 169 227)(62 480 170 228)(63 451 171 229)(64 452 172 230)(65 453 173 231)(66 454 174 232)(67 455 175 233)(68 456 176 234)(69 457 177 235)(70 458 178 236)(71 459 179 237)(72 460 180 238)(73 461 151 239)(74 462 152 240)(75 463 153 211)(76 464 154 212)(77 465 155 213)(78 466 156 214)(79 467 157 215)(80 468 158 216)(81 469 159 217)(82 470 160 218)(83 471 161 219)(84 472 162 220)(85 473 163 221)(86 474 164 222)(87 475 165 223)(88 476 166 224)(89 477 167 225)(90 478 168 226)(91 144 261 199)(92 145 262 200)(93 146 263 201)(94 147 264 202)(95 148 265 203)(96 149 266 204)(97 150 267 205)(98 121 268 206)(99 122 269 207)(100 123 270 208)(101 124 241 209)(102 125 242 210)(103 126 243 181)(104 127 244 182)(105 128 245 183)(106 129 246 184)(107 130 247 185)(108 131 248 186)(109 132 249 187)(110 133 250 188)(111 134 251 189)(112 135 252 190)(113 136 253 191)(114 137 254 192)(115 138 255 193)(116 139 256 194)(117 140 257 195)(118 141 258 196)(119 142 259 197)(120 143 260 198)
(1 363 283 44)(2 364 284 45)(3 365 285 46)(4 366 286 47)(5 367 287 48)(6 368 288 49)(7 369 289 50)(8 370 290 51)(9 371 291 52)(10 372 292 53)(11 373 293 54)(12 374 294 55)(13 375 295 56)(14 376 296 57)(15 377 297 58)(16 378 298 59)(17 379 299 60)(18 380 300 31)(19 381 271 32)(20 382 272 33)(21 383 273 34)(22 384 274 35)(23 385 275 36)(24 386 276 37)(25 387 277 38)(26 388 278 39)(27 389 279 40)(28 390 280 41)(29 361 281 42)(30 362 282 43)(61 100 169 270)(62 101 170 241)(63 102 171 242)(64 103 172 243)(65 104 173 244)(66 105 174 245)(67 106 175 246)(68 107 176 247)(69 108 177 248)(70 109 178 249)(71 110 179 250)(72 111 180 251)(73 112 151 252)(74 113 152 253)(75 114 153 254)(76 115 154 255)(77 116 155 256)(78 117 156 257)(79 118 157 258)(80 119 158 259)(81 120 159 260)(82 91 160 261)(83 92 161 262)(84 93 162 263)(85 94 163 264)(86 95 164 265)(87 96 165 266)(88 97 166 267)(89 98 167 268)(90 99 168 269)(121 477 206 225)(122 478 207 226)(123 479 208 227)(124 480 209 228)(125 451 210 229)(126 452 181 230)(127 453 182 231)(128 454 183 232)(129 455 184 233)(130 456 185 234)(131 457 186 235)(132 458 187 236)(133 459 188 237)(134 460 189 238)(135 461 190 239)(136 462 191 240)(137 463 192 211)(138 464 193 212)(139 465 194 213)(140 466 195 214)(141 467 196 215)(142 468 197 216)(143 469 198 217)(144 470 199 218)(145 471 200 219)(146 472 201 220)(147 473 202 221)(148 474 203 222)(149 475 204 223)(150 476 205 224)(301 446 398 350)(302 447 399 351)(303 448 400 352)(304 449 401 353)(305 450 402 354)(306 421 403 355)(307 422 404 356)(308 423 405 357)(309 424 406 358)(310 425 407 359)(311 426 408 360)(312 427 409 331)(313 428 410 332)(314 429 411 333)(315 430 412 334)(316 431 413 335)(317 432 414 336)(318 433 415 337)(319 434 416 338)(320 435 417 339)(321 436 418 340)(322 437 419 341)(323 438 420 342)(324 439 391 343)(325 440 392 344)(326 441 393 345)(327 442 394 346)(328 443 395 347)(329 444 396 348)(330 445 397 349)

G:=sub<Sym(480)| (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)(31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60)(61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90)(91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120)(121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150)(151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180)(181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210)(211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240)(241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270)(271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300)(301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330)(331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360)(361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390)(391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420)(421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450)(451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480), (1,253,16,268)(2,252,17,267)(3,251,18,266)(4,250,19,265)(5,249,20,264)(6,248,21,263)(7,247,22,262)(8,246,23,261)(9,245,24,260)(10,244,25,259)(11,243,26,258)(12,242,27,257)(13,241,28,256)(14,270,29,255)(15,269,30,254)(31,165,46,180)(32,164,47,179)(33,163,48,178)(34,162,49,177)(35,161,50,176)(36,160,51,175)(37,159,52,174)(38,158,53,173)(39,157,54,172)(40,156,55,171)(41,155,56,170)(42,154,57,169)(43,153,58,168)(44,152,59,167)(45,151,60,166)(61,361,76,376)(62,390,77,375)(63,389,78,374)(64,388,79,373)(65,387,80,372)(66,386,81,371)(67,385,82,370)(68,384,83,369)(69,383,84,368)(70,382,85,367)(71,381,86,366)(72,380,87,365)(73,379,88,364)(74,378,89,363)(75,377,90,362)(91,290,106,275)(92,289,107,274)(93,288,108,273)(94,287,109,272)(95,286,110,271)(96,285,111,300)(97,284,112,299)(98,283,113,298)(99,282,114,297)(100,281,115,296)(101,280,116,295)(102,279,117,294)(103,278,118,293)(104,277,119,292)(105,276,120,291)(121,437,136,422)(122,436,137,421)(123,435,138,450)(124,434,139,449)(125,433,140,448)(126,432,141,447)(127,431,142,446)(128,430,143,445)(129,429,144,444)(130,428,145,443)(131,427,146,442)(132,426,147,441)(133,425,148,440)(134,424,149,439)(135,423,150,438)(181,336,196,351)(182,335,197,350)(183,334,198,349)(184,333,199,348)(185,332,200,347)(186,331,201,346)(187,360,202,345)(188,359,203,344)(189,358,204,343)(190,357,205,342)(191,356,206,341)(192,355,207,340)(193,354,208,339)(194,353,209,338)(195,352,210,337)(211,306,226,321)(212,305,227,320)(213,304,228,319)(214,303,229,318)(215,302,230,317)(216,301,231,316)(217,330,232,315)(218,329,233,314)(219,328,234,313)(220,327,235,312)(221,326,236,311)(222,325,237,310)(223,324,238,309)(224,323,239,308)(225,322,240,307)(391,460,406,475)(392,459,407,474)(393,458,408,473)(394,457,409,472)(395,456,410,471)(396,455,411,470)(397,454,412,469)(398,453,413,468)(399,452,414,467)(400,451,415,466)(401,480,416,465)(402,479,417,464)(403,478,418,463)(404,477,419,462)(405,476,420,461), (1,356,283,422)(2,357,284,423)(3,358,285,424)(4,359,286,425)(5,360,287,426)(6,331,288,427)(7,332,289,428)(8,333,290,429)(9,334,291,430)(10,335,292,431)(11,336,293,432)(12,337,294,433)(13,338,295,434)(14,339,296,435)(15,340,297,436)(16,341,298,437)(17,342,299,438)(18,343,300,439)(19,344,271,440)(20,345,272,441)(21,346,273,442)(22,347,274,443)(23,348,275,444)(24,349,276,445)(25,350,277,446)(26,351,278,447)(27,352,279,448)(28,353,280,449)(29,354,281,450)(30,355,282,421)(31,324,380,391)(32,325,381,392)(33,326,382,393)(34,327,383,394)(35,328,384,395)(36,329,385,396)(37,330,386,397)(38,301,387,398)(39,302,388,399)(40,303,389,400)(41,304,390,401)(42,305,361,402)(43,306,362,403)(44,307,363,404)(45,308,364,405)(46,309,365,406)(47,310,366,407)(48,311,367,408)(49,312,368,409)(50,313,369,410)(51,314,370,411)(52,315,371,412)(53,316,372,413)(54,317,373,414)(55,318,374,415)(56,319,375,416)(57,320,376,417)(58,321,377,418)(59,322,378,419)(60,323,379,420)(61,479,169,227)(62,480,170,228)(63,451,171,229)(64,452,172,230)(65,453,173,231)(66,454,174,232)(67,455,175,233)(68,456,176,234)(69,457,177,235)(70,458,178,236)(71,459,179,237)(72,460,180,238)(73,461,151,239)(74,462,152,240)(75,463,153,211)(76,464,154,212)(77,465,155,213)(78,466,156,214)(79,467,157,215)(80,468,158,216)(81,469,159,217)(82,470,160,218)(83,471,161,219)(84,472,162,220)(85,473,163,221)(86,474,164,222)(87,475,165,223)(88,476,166,224)(89,477,167,225)(90,478,168,226)(91,144,261,199)(92,145,262,200)(93,146,263,201)(94,147,264,202)(95,148,265,203)(96,149,266,204)(97,150,267,205)(98,121,268,206)(99,122,269,207)(100,123,270,208)(101,124,241,209)(102,125,242,210)(103,126,243,181)(104,127,244,182)(105,128,245,183)(106,129,246,184)(107,130,247,185)(108,131,248,186)(109,132,249,187)(110,133,250,188)(111,134,251,189)(112,135,252,190)(113,136,253,191)(114,137,254,192)(115,138,255,193)(116,139,256,194)(117,140,257,195)(118,141,258,196)(119,142,259,197)(120,143,260,198), (1,363,283,44)(2,364,284,45)(3,365,285,46)(4,366,286,47)(5,367,287,48)(6,368,288,49)(7,369,289,50)(8,370,290,51)(9,371,291,52)(10,372,292,53)(11,373,293,54)(12,374,294,55)(13,375,295,56)(14,376,296,57)(15,377,297,58)(16,378,298,59)(17,379,299,60)(18,380,300,31)(19,381,271,32)(20,382,272,33)(21,383,273,34)(22,384,274,35)(23,385,275,36)(24,386,276,37)(25,387,277,38)(26,388,278,39)(27,389,279,40)(28,390,280,41)(29,361,281,42)(30,362,282,43)(61,100,169,270)(62,101,170,241)(63,102,171,242)(64,103,172,243)(65,104,173,244)(66,105,174,245)(67,106,175,246)(68,107,176,247)(69,108,177,248)(70,109,178,249)(71,110,179,250)(72,111,180,251)(73,112,151,252)(74,113,152,253)(75,114,153,254)(76,115,154,255)(77,116,155,256)(78,117,156,257)(79,118,157,258)(80,119,158,259)(81,120,159,260)(82,91,160,261)(83,92,161,262)(84,93,162,263)(85,94,163,264)(86,95,164,265)(87,96,165,266)(88,97,166,267)(89,98,167,268)(90,99,168,269)(121,477,206,225)(122,478,207,226)(123,479,208,227)(124,480,209,228)(125,451,210,229)(126,452,181,230)(127,453,182,231)(128,454,183,232)(129,455,184,233)(130,456,185,234)(131,457,186,235)(132,458,187,236)(133,459,188,237)(134,460,189,238)(135,461,190,239)(136,462,191,240)(137,463,192,211)(138,464,193,212)(139,465,194,213)(140,466,195,214)(141,467,196,215)(142,468,197,216)(143,469,198,217)(144,470,199,218)(145,471,200,219)(146,472,201,220)(147,473,202,221)(148,474,203,222)(149,475,204,223)(150,476,205,224)(301,446,398,350)(302,447,399,351)(303,448,400,352)(304,449,401,353)(305,450,402,354)(306,421,403,355)(307,422,404,356)(308,423,405,357)(309,424,406,358)(310,425,407,359)(311,426,408,360)(312,427,409,331)(313,428,410,332)(314,429,411,333)(315,430,412,334)(316,431,413,335)(317,432,414,336)(318,433,415,337)(319,434,416,338)(320,435,417,339)(321,436,418,340)(322,437,419,341)(323,438,420,342)(324,439,391,343)(325,440,392,344)(326,441,393,345)(327,442,394,346)(328,443,395,347)(329,444,396,348)(330,445,397,349)>;

G:=Group( (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)(31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60)(61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90)(91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120)(121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150)(151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180)(181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210)(211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240)(241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270)(271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300)(301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330)(331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360)(361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390)(391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420)(421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450)(451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480), (1,253,16,268)(2,252,17,267)(3,251,18,266)(4,250,19,265)(5,249,20,264)(6,248,21,263)(7,247,22,262)(8,246,23,261)(9,245,24,260)(10,244,25,259)(11,243,26,258)(12,242,27,257)(13,241,28,256)(14,270,29,255)(15,269,30,254)(31,165,46,180)(32,164,47,179)(33,163,48,178)(34,162,49,177)(35,161,50,176)(36,160,51,175)(37,159,52,174)(38,158,53,173)(39,157,54,172)(40,156,55,171)(41,155,56,170)(42,154,57,169)(43,153,58,168)(44,152,59,167)(45,151,60,166)(61,361,76,376)(62,390,77,375)(63,389,78,374)(64,388,79,373)(65,387,80,372)(66,386,81,371)(67,385,82,370)(68,384,83,369)(69,383,84,368)(70,382,85,367)(71,381,86,366)(72,380,87,365)(73,379,88,364)(74,378,89,363)(75,377,90,362)(91,290,106,275)(92,289,107,274)(93,288,108,273)(94,287,109,272)(95,286,110,271)(96,285,111,300)(97,284,112,299)(98,283,113,298)(99,282,114,297)(100,281,115,296)(101,280,116,295)(102,279,117,294)(103,278,118,293)(104,277,119,292)(105,276,120,291)(121,437,136,422)(122,436,137,421)(123,435,138,450)(124,434,139,449)(125,433,140,448)(126,432,141,447)(127,431,142,446)(128,430,143,445)(129,429,144,444)(130,428,145,443)(131,427,146,442)(132,426,147,441)(133,425,148,440)(134,424,149,439)(135,423,150,438)(181,336,196,351)(182,335,197,350)(183,334,198,349)(184,333,199,348)(185,332,200,347)(186,331,201,346)(187,360,202,345)(188,359,203,344)(189,358,204,343)(190,357,205,342)(191,356,206,341)(192,355,207,340)(193,354,208,339)(194,353,209,338)(195,352,210,337)(211,306,226,321)(212,305,227,320)(213,304,228,319)(214,303,229,318)(215,302,230,317)(216,301,231,316)(217,330,232,315)(218,329,233,314)(219,328,234,313)(220,327,235,312)(221,326,236,311)(222,325,237,310)(223,324,238,309)(224,323,239,308)(225,322,240,307)(391,460,406,475)(392,459,407,474)(393,458,408,473)(394,457,409,472)(395,456,410,471)(396,455,411,470)(397,454,412,469)(398,453,413,468)(399,452,414,467)(400,451,415,466)(401,480,416,465)(402,479,417,464)(403,478,418,463)(404,477,419,462)(405,476,420,461), (1,356,283,422)(2,357,284,423)(3,358,285,424)(4,359,286,425)(5,360,287,426)(6,331,288,427)(7,332,289,428)(8,333,290,429)(9,334,291,430)(10,335,292,431)(11,336,293,432)(12,337,294,433)(13,338,295,434)(14,339,296,435)(15,340,297,436)(16,341,298,437)(17,342,299,438)(18,343,300,439)(19,344,271,440)(20,345,272,441)(21,346,273,442)(22,347,274,443)(23,348,275,444)(24,349,276,445)(25,350,277,446)(26,351,278,447)(27,352,279,448)(28,353,280,449)(29,354,281,450)(30,355,282,421)(31,324,380,391)(32,325,381,392)(33,326,382,393)(34,327,383,394)(35,328,384,395)(36,329,385,396)(37,330,386,397)(38,301,387,398)(39,302,388,399)(40,303,389,400)(41,304,390,401)(42,305,361,402)(43,306,362,403)(44,307,363,404)(45,308,364,405)(46,309,365,406)(47,310,366,407)(48,311,367,408)(49,312,368,409)(50,313,369,410)(51,314,370,411)(52,315,371,412)(53,316,372,413)(54,317,373,414)(55,318,374,415)(56,319,375,416)(57,320,376,417)(58,321,377,418)(59,322,378,419)(60,323,379,420)(61,479,169,227)(62,480,170,228)(63,451,171,229)(64,452,172,230)(65,453,173,231)(66,454,174,232)(67,455,175,233)(68,456,176,234)(69,457,177,235)(70,458,178,236)(71,459,179,237)(72,460,180,238)(73,461,151,239)(74,462,152,240)(75,463,153,211)(76,464,154,212)(77,465,155,213)(78,466,156,214)(79,467,157,215)(80,468,158,216)(81,469,159,217)(82,470,160,218)(83,471,161,219)(84,472,162,220)(85,473,163,221)(86,474,164,222)(87,475,165,223)(88,476,166,224)(89,477,167,225)(90,478,168,226)(91,144,261,199)(92,145,262,200)(93,146,263,201)(94,147,264,202)(95,148,265,203)(96,149,266,204)(97,150,267,205)(98,121,268,206)(99,122,269,207)(100,123,270,208)(101,124,241,209)(102,125,242,210)(103,126,243,181)(104,127,244,182)(105,128,245,183)(106,129,246,184)(107,130,247,185)(108,131,248,186)(109,132,249,187)(110,133,250,188)(111,134,251,189)(112,135,252,190)(113,136,253,191)(114,137,254,192)(115,138,255,193)(116,139,256,194)(117,140,257,195)(118,141,258,196)(119,142,259,197)(120,143,260,198), (1,363,283,44)(2,364,284,45)(3,365,285,46)(4,366,286,47)(5,367,287,48)(6,368,288,49)(7,369,289,50)(8,370,290,51)(9,371,291,52)(10,372,292,53)(11,373,293,54)(12,374,294,55)(13,375,295,56)(14,376,296,57)(15,377,297,58)(16,378,298,59)(17,379,299,60)(18,380,300,31)(19,381,271,32)(20,382,272,33)(21,383,273,34)(22,384,274,35)(23,385,275,36)(24,386,276,37)(25,387,277,38)(26,388,278,39)(27,389,279,40)(28,390,280,41)(29,361,281,42)(30,362,282,43)(61,100,169,270)(62,101,170,241)(63,102,171,242)(64,103,172,243)(65,104,173,244)(66,105,174,245)(67,106,175,246)(68,107,176,247)(69,108,177,248)(70,109,178,249)(71,110,179,250)(72,111,180,251)(73,112,151,252)(74,113,152,253)(75,114,153,254)(76,115,154,255)(77,116,155,256)(78,117,156,257)(79,118,157,258)(80,119,158,259)(81,120,159,260)(82,91,160,261)(83,92,161,262)(84,93,162,263)(85,94,163,264)(86,95,164,265)(87,96,165,266)(88,97,166,267)(89,98,167,268)(90,99,168,269)(121,477,206,225)(122,478,207,226)(123,479,208,227)(124,480,209,228)(125,451,210,229)(126,452,181,230)(127,453,182,231)(128,454,183,232)(129,455,184,233)(130,456,185,234)(131,457,186,235)(132,458,187,236)(133,459,188,237)(134,460,189,238)(135,461,190,239)(136,462,191,240)(137,463,192,211)(138,464,193,212)(139,465,194,213)(140,466,195,214)(141,467,196,215)(142,468,197,216)(143,469,198,217)(144,470,199,218)(145,471,200,219)(146,472,201,220)(147,473,202,221)(148,474,203,222)(149,475,204,223)(150,476,205,224)(301,446,398,350)(302,447,399,351)(303,448,400,352)(304,449,401,353)(305,450,402,354)(306,421,403,355)(307,422,404,356)(308,423,405,357)(309,424,406,358)(310,425,407,359)(311,426,408,360)(312,427,409,331)(313,428,410,332)(314,429,411,333)(315,430,412,334)(316,431,413,335)(317,432,414,336)(318,433,415,337)(319,434,416,338)(320,435,417,339)(321,436,418,340)(322,437,419,341)(323,438,420,342)(324,439,391,343)(325,440,392,344)(326,441,393,345)(327,442,394,346)(328,443,395,347)(329,444,396,348)(330,445,397,349) );

G=PermutationGroup([[(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30),(31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60),(61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90),(91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120),(121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150),(151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180),(181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210),(211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240),(241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270),(271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300),(301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330),(331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360),(361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390),(391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420),(421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450),(451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480)], [(1,253,16,268),(2,252,17,267),(3,251,18,266),(4,250,19,265),(5,249,20,264),(6,248,21,263),(7,247,22,262),(8,246,23,261),(9,245,24,260),(10,244,25,259),(11,243,26,258),(12,242,27,257),(13,241,28,256),(14,270,29,255),(15,269,30,254),(31,165,46,180),(32,164,47,179),(33,163,48,178),(34,162,49,177),(35,161,50,176),(36,160,51,175),(37,159,52,174),(38,158,53,173),(39,157,54,172),(40,156,55,171),(41,155,56,170),(42,154,57,169),(43,153,58,168),(44,152,59,167),(45,151,60,166),(61,361,76,376),(62,390,77,375),(63,389,78,374),(64,388,79,373),(65,387,80,372),(66,386,81,371),(67,385,82,370),(68,384,83,369),(69,383,84,368),(70,382,85,367),(71,381,86,366),(72,380,87,365),(73,379,88,364),(74,378,89,363),(75,377,90,362),(91,290,106,275),(92,289,107,274),(93,288,108,273),(94,287,109,272),(95,286,110,271),(96,285,111,300),(97,284,112,299),(98,283,113,298),(99,282,114,297),(100,281,115,296),(101,280,116,295),(102,279,117,294),(103,278,118,293),(104,277,119,292),(105,276,120,291),(121,437,136,422),(122,436,137,421),(123,435,138,450),(124,434,139,449),(125,433,140,448),(126,432,141,447),(127,431,142,446),(128,430,143,445),(129,429,144,444),(130,428,145,443),(131,427,146,442),(132,426,147,441),(133,425,148,440),(134,424,149,439),(135,423,150,438),(181,336,196,351),(182,335,197,350),(183,334,198,349),(184,333,199,348),(185,332,200,347),(186,331,201,346),(187,360,202,345),(188,359,203,344),(189,358,204,343),(190,357,205,342),(191,356,206,341),(192,355,207,340),(193,354,208,339),(194,353,209,338),(195,352,210,337),(211,306,226,321),(212,305,227,320),(213,304,228,319),(214,303,229,318),(215,302,230,317),(216,301,231,316),(217,330,232,315),(218,329,233,314),(219,328,234,313),(220,327,235,312),(221,326,236,311),(222,325,237,310),(223,324,238,309),(224,323,239,308),(225,322,240,307),(391,460,406,475),(392,459,407,474),(393,458,408,473),(394,457,409,472),(395,456,410,471),(396,455,411,470),(397,454,412,469),(398,453,413,468),(399,452,414,467),(400,451,415,466),(401,480,416,465),(402,479,417,464),(403,478,418,463),(404,477,419,462),(405,476,420,461)], [(1,356,283,422),(2,357,284,423),(3,358,285,424),(4,359,286,425),(5,360,287,426),(6,331,288,427),(7,332,289,428),(8,333,290,429),(9,334,291,430),(10,335,292,431),(11,336,293,432),(12,337,294,433),(13,338,295,434),(14,339,296,435),(15,340,297,436),(16,341,298,437),(17,342,299,438),(18,343,300,439),(19,344,271,440),(20,345,272,441),(21,346,273,442),(22,347,274,443),(23,348,275,444),(24,349,276,445),(25,350,277,446),(26,351,278,447),(27,352,279,448),(28,353,280,449),(29,354,281,450),(30,355,282,421),(31,324,380,391),(32,325,381,392),(33,326,382,393),(34,327,383,394),(35,328,384,395),(36,329,385,396),(37,330,386,397),(38,301,387,398),(39,302,388,399),(40,303,389,400),(41,304,390,401),(42,305,361,402),(43,306,362,403),(44,307,363,404),(45,308,364,405),(46,309,365,406),(47,310,366,407),(48,311,367,408),(49,312,368,409),(50,313,369,410),(51,314,370,411),(52,315,371,412),(53,316,372,413),(54,317,373,414),(55,318,374,415),(56,319,375,416),(57,320,376,417),(58,321,377,418),(59,322,378,419),(60,323,379,420),(61,479,169,227),(62,480,170,228),(63,451,171,229),(64,452,172,230),(65,453,173,231),(66,454,174,232),(67,455,175,233),(68,456,176,234),(69,457,177,235),(70,458,178,236),(71,459,179,237),(72,460,180,238),(73,461,151,239),(74,462,152,240),(75,463,153,211),(76,464,154,212),(77,465,155,213),(78,466,156,214),(79,467,157,215),(80,468,158,216),(81,469,159,217),(82,470,160,218),(83,471,161,219),(84,472,162,220),(85,473,163,221),(86,474,164,222),(87,475,165,223),(88,476,166,224),(89,477,167,225),(90,478,168,226),(91,144,261,199),(92,145,262,200),(93,146,263,201),(94,147,264,202),(95,148,265,203),(96,149,266,204),(97,150,267,205),(98,121,268,206),(99,122,269,207),(100,123,270,208),(101,124,241,209),(102,125,242,210),(103,126,243,181),(104,127,244,182),(105,128,245,183),(106,129,246,184),(107,130,247,185),(108,131,248,186),(109,132,249,187),(110,133,250,188),(111,134,251,189),(112,135,252,190),(113,136,253,191),(114,137,254,192),(115,138,255,193),(116,139,256,194),(117,140,257,195),(118,141,258,196),(119,142,259,197),(120,143,260,198)], [(1,363,283,44),(2,364,284,45),(3,365,285,46),(4,366,286,47),(5,367,287,48),(6,368,288,49),(7,369,289,50),(8,370,290,51),(9,371,291,52),(10,372,292,53),(11,373,293,54),(12,374,294,55),(13,375,295,56),(14,376,296,57),(15,377,297,58),(16,378,298,59),(17,379,299,60),(18,380,300,31),(19,381,271,32),(20,382,272,33),(21,383,273,34),(22,384,274,35),(23,385,275,36),(24,386,276,37),(25,387,277,38),(26,388,278,39),(27,389,279,40),(28,390,280,41),(29,361,281,42),(30,362,282,43),(61,100,169,270),(62,101,170,241),(63,102,171,242),(64,103,172,243),(65,104,173,244),(66,105,174,245),(67,106,175,246),(68,107,176,247),(69,108,177,248),(70,109,178,249),(71,110,179,250),(72,111,180,251),(73,112,151,252),(74,113,152,253),(75,114,153,254),(76,115,154,255),(77,116,155,256),(78,117,156,257),(79,118,157,258),(80,119,158,259),(81,120,159,260),(82,91,160,261),(83,92,161,262),(84,93,162,263),(85,94,163,264),(86,95,164,265),(87,96,165,266),(88,97,166,267),(89,98,167,268),(90,99,168,269),(121,477,206,225),(122,478,207,226),(123,479,208,227),(124,480,209,228),(125,451,210,229),(126,452,181,230),(127,453,182,231),(128,454,183,232),(129,455,184,233),(130,456,185,234),(131,457,186,235),(132,458,187,236),(133,459,188,237),(134,460,189,238),(135,461,190,239),(136,462,191,240),(137,463,192,211),(138,464,193,212),(139,465,194,213),(140,466,195,214),(141,467,196,215),(142,468,197,216),(143,469,198,217),(144,470,199,218),(145,471,200,219),(146,472,201,220),(147,473,202,221),(148,474,203,222),(149,475,204,223),(150,476,205,224),(301,446,398,350),(302,447,399,351),(303,448,400,352),(304,449,401,353),(305,450,402,354),(306,421,403,355),(307,422,404,356),(308,423,405,357),(309,424,406,358),(310,425,407,359),(311,426,408,360),(312,427,409,331),(313,428,410,332),(314,429,411,333),(315,430,412,334),(316,431,413,335),(317,432,414,336),(318,433,415,337),(319,434,416,338),(320,435,417,339),(321,436,418,340),(322,437,419,341),(323,438,420,342),(324,439,391,343),(325,440,392,344),(326,441,393,345),(327,442,394,346),(328,443,395,347),(329,444,396,348),(330,445,397,349)]])

84 conjugacy classes

 class 1 2A 2B 2C 3 4A 4B 4C 4D 4E 4F 4G 4H 4I 4J 5A 5B 6A 6B 6C 10A ··· 10F 12A ··· 12F 15A 15B 15C 15D 20A ··· 20L 30A ··· 30L 60A ··· 60X order 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 5 5 6 6 6 10 ··· 10 12 ··· 12 15 15 15 15 20 ··· 20 30 ··· 30 60 ··· 60 size 1 1 1 1 2 2 2 4 4 30 30 30 30 60 60 2 2 2 2 2 2 ··· 2 4 ··· 4 2 2 2 2 4 ··· 4 2 ··· 2 4 ··· 4

84 irreducible representations

 dim 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 4 4 4 type + + + + + + - + + + + + + - - - image C1 C2 C2 C2 C2 S3 Q8 D4 D5 D6 D10 C3⋊D4 D15 C5⋊D4 D30 C15⋊7D4 S3×Q8 Q8×D5 Q8×D15 kernel Dic15⋊4Q8 C4×Dic15 C30.4Q8 C2×Dic30 Q8×C30 Q8×C10 Dic15 C60 C6×Q8 C2×C20 C2×C12 C20 C2×Q8 C12 C2×C4 C4 C10 C6 C2 # reps 1 1 4 1 1 1 4 2 2 3 6 4 4 8 12 16 2 4 8

Matrix representation of Dic154Q8 in GL6(𝔽61)

 33 24 0 0 0 0 37 14 0 0 0 0 0 0 58 15 0 0 0 0 52 4 0 0 0 0 0 0 1 0 0 0 0 0 0 1
,
 53 55 0 0 0 0 41 8 0 0 0 0 0 0 28 3 0 0 0 0 23 33 0 0 0 0 0 0 60 0 0 0 0 0 0 60
,
 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 35 0 0 0 0 40 59 0 0 0 0 0 0 1 53 0 0 0 0 46 60
,
 60 0 0 0 0 0 0 60 0 0 0 0 0 0 60 0 0 0 0 0 0 60 0 0 0 0 0 0 30 7 0 0 0 0 2 31

G:=sub<GL(6,GF(61))| [33,37,0,0,0,0,24,14,0,0,0,0,0,0,58,52,0,0,0,0,15,4,0,0,0,0,0,0,1,0,0,0,0,0,0,1],[53,41,0,0,0,0,55,8,0,0,0,0,0,0,28,23,0,0,0,0,3,33,0,0,0,0,0,0,60,0,0,0,0,0,0,60],[1,0,0,0,0,0,0,1,0,0,0,0,0,0,2,40,0,0,0,0,35,59,0,0,0,0,0,0,1,46,0,0,0,0,53,60],[60,0,0,0,0,0,0,60,0,0,0,0,0,0,60,0,0,0,0,0,0,60,0,0,0,0,0,0,30,2,0,0,0,0,7,31] >;

Dic154Q8 in GAP, Magma, Sage, TeX

{\rm Dic}_{15}\rtimes_4Q_8
% in TeX

G:=Group("Dic15:4Q8");
// GroupNames label

G:=SmallGroup(480,909);
// by ID

G=gap.SmallGroup(480,909);
# by ID

G:=PCGroup([7,-2,-2,-2,-2,-2,-3,-5,112,64,422,135,58,2693,18822]);
// Polycyclic

G:=Group<a,b,c,d|a^30=c^4=1,b^2=a^15,d^2=c^2,b*a*b^-1=a^-1,a*c=c*a,a*d=d*a,c*b*c^-1=a^15*b,b*d=d*b,d*c*d^-1=c^-1>;
// generators/relations

׿
×
𝔽


text:
# Mathematical genealogy

The Mathematics Genealogy Project maintains a “genealogical” database of mathematics Ph.D. advisors and their students.  Please click here for the genealogy tree for the Union College Math Department (as of 2008).

format: plain


text:
# What is the STM32 event EVENTOUT?

In the manual of my STM32, one of the GPIO Alternate Functions (namely AF15, see page 138) is called EVENTOUT. At no point is the event defined, or a use case given.

What is the EVENTOUT alternate function of my STM32?

Good question; you think they would put that info in the manual...or a least a little blurb like the following...

Doing some digging, found this from STM32F10x Technical Training V0.3

Event Out signal generation
Pulse generation with SEV instruction: to wake-up an other MCU from low power mode through its Event In signal

Looked up SEV instruction for further info/confirmation:

SEV is a hint instruction that causes an event to be signaled to all processors within multiprocessor system. It also sets the local event register to 1, see Power management.

EVENTOUT function seems to be a power management feature for multi-processor systems. I'm sure it could be used in other ways, depending on what the output pulse looks like, but I would guess the majority use case is to wake other processors thru their respective EVENTIN signals.

Edit by anonymous (subsequently re-edited for accuracy and organization)*

SEV is an assembly language instruction. Some C compilers may allow it be be utilized via inline assembly, for example __asm__ volatile ("sev"); though the exact form will be compiler-specific.

In actual use, the instruction will output a pulse for one clock period (for example, 14ns with a 72MHz core clock) on whichever pin is configured and enabled via the AFIO_EVCR register and is in alternate function output mode.

It was suggested that a sequence of SEV instructions and nop's could be used to output a train of pulses at a fraction of the clock rate. Possibly two sequential SEV instructions could create a longer pulse, though no guarantee against glitching has been cited.

* Reviewer's comment. This is an answer submitted as an edit to the O.P. by an anonymous unregistered user. This kind of edit is against guidelines (too radical). An exception for this edit can be mad in order not to lose the answer. Nick.


text:
# Which two kingdoms has organisms that are decomposers?

###### Question:

Which two kingdoms has organisms that are decomposers?

### Which country has the largest amount of land in North America in 1783?

which country has the largest amount of land in North America in 1783?...

### What is the action force of a bug hitting a windshield?

what is the action force of a bug hitting a windshield?...

### How do u teachlong division

how do u teachlong division...

### Your answer should be a polynomial in standard form. ( − 2 h + 9 ) ( 9 h − 2 ) = (−2h+9)(9h−2)=

Your answer should be a polynomial in standard form. ( − 2 h + 9 ) ( 9 h − 2 ) = (−2h+9)(9h−2)=...

### The animal leaders in Achebe's myth use violence to seize and wield power. What lessons do you think Achebe suggests through his depiction of the animals and their encounters with the hunter? Write a paragraph explaining your views.

The animal leaders in Achebe's myth use violence to seize and wield power. What lessons do you think Achebe suggests through his depiction of the animals and their encounters with the hunter? Write a paragraph explaining your views....

### What is the author’s purpose for writing the poem yes we are latinos

what is the author’s purpose for writing the poem yes we are latinos...

### The length of a human pregnancy is normally distributed with a mean of 270 days with a standard deviation of 8 days. How many days would a pregnancy last for the shortest 15%? Round answer to 2 decimal places. Answer

The length of a human pregnancy is normally distributed with a mean of 270 days with a standard deviation of 8 days. How many days would a pregnancy last for the shortest 15%? Round answer to 2 decimal places. Answer...

### This is embarrassing, but i kinda like forgot how to do math so can anyone explain how to do 209 x 204 while showing your work . the zeroes confuse me

This is embarrassing, but i kinda like forgot how to do math so can anyone explain how to do 209 x 204 while showing your work . the zeroes confuse me...

### Country A has a growth rate of 4.9% per year. The population is currently 4 comma 151,000, and the land area of Country A is 14,000,000,000 square yards. Assuming this growth rate continues and is exponential, after how long will there be one person for every square yard of land?

Country A has a growth rate of 4.9% per year. The population is currently 4 comma 151,000, and the land area of Country A is 14,000,000,000 square yards. Assuming this growth rate continues and is exponential, after how long will there be one person for every square yard of land?...

### There are 53 students on the Jackson Middle School basketball teams. The number of 8th graders is 15 fewer than three times the number of 7th graders. How many 7th and 8th graders are on the basketball teams? 7th graders  ----------------------- 8th graders  -----------------------

There are 53 students on the Jackson Middle School basketball teams. The number of 8th graders is 15 fewer than three times the number of 7th graders. How many 7th and 8th graders are on the basketball teams? 7th graders  ----------------------- 8th graders  -----------------------...

### Wilson believed that the United States must

Wilson believed that the United States must...

### Is brainly dead also... Clarence is an outdoor enthusiast. He is bird watching at a nature preserve. Clarence has $forty and rents a pair of binoculars for$three per hour. 1. If Clarence rents the binoculars for one hour, how much money will he have left? 2.After six hours of bird watching, he spots his favorite bird, an oriole, and goes home. How much money does he have left?

is brainly dead also... Clarence is an outdoor enthusiast. He is bird watching at a nature preserve. Clarence has $forty and rents a pair of binoculars for$three per hour. 1. If Clarence rents the binoculars for one hour, how much money will he have left? 2.After six hours of bird watching, he spo...

### How many vowels does Dwayne Johnson have in his name

how many vowels does Dwayne Johnson have in his name...

### Agent Bond is standing on a bridge, 13.5 m above the road below, and his pursuers are getting too close for comfort. He spots a flatbed truck approaching at 25 m/s, which he measures by knowing that the telephone poles the truck is passing are 25 m apart in this region. The roof of the truck is 3.5 m above the road, and Bond quickly calculates how many poles away the truck should be when he drops down from the bridge onto the truck, making his getaway. How many poles is it?

Agent Bond is standing on a bridge, 13.5 m above the road below, and his pursuers are getting too close for comfort. He spots a flatbed truck approaching at 25 m/s, which he measures by knowing that the telephone poles the truck is passing are 25 m apart in this region. The roof of the truck is 3.5 ...

### A carrier owned and operated by the shipper is: _____ a. a common carrier. b. a contract carrier. c. a private carrier. d. a consignor.

A carrier owned and operated by the shipper is: _____ a. a common carrier. b. a contract carrier. c. a private carrier. d. a consignor....

### The length of a rectangle is 8 centimeters, and the area of the rectangle is 72 square centimeters. What is the width of the rectangle?

The length of a rectangle is 8 centimeters, and the area of the rectangle is 72 square centimeters. What is the width of the rectangle?...


text:
# Product of subgroups and generating sets

Prove or disprove the following:

$(1)$ Let $H$,$K$ be subgroups of a finite group $G$. If $|HK|=|\langle H,K \rangle|$, then $HK=\langle H,K \rangle$, that is, $HK$ is a subgroup of $G$.

$(2)$ Let $H_{1}$,$H_{2}$,..., $H_{n}$ be subgroups of a finite group $G$, where $n$ is a positive intger. If $|H_{1}H_{2}...H_{n}|=|\langle H_{1},H_{1},...,H_{n} \rangle|$, then $H_{1}H_{2}...H_{n}=\langle H_{1},H_{1},...,H_{n} \rangle$, that is, $H_{1}H_{2}...H_{n}$ is a subgroup of $G$.

My try:

$(1)$ $HK$ is a subset of $\langle H,K \rangle$. Since $|HK|=|\langle H,K \rangle|$ and $\langle H,K \rangle$ is a subgroup of $G$, then $HK=\langle H,K \rangle$.

$(2)$ Same as in $(1)$.

-
What have you done? –  Alexander Gruber Nov 20 '12 at 15:14
@AlexanderGruber: Please see the question again. –  user28083 Nov 20 '12 at 15:38
Looks correct to me. Good job. –  Alexander Gruber Nov 20 '12 at 16:01
Thank you very much. –  user28083 Nov 21 '12 at 21:19


text:
# Naturalness of the relaxion mechanism

### Abstract

The relaxion mechanism is a novel solution to the hierarchy problem that utilizes the dynamics of an axion-like field. I discuss results from the first statistical analysis of the relaxion mechanism, in which we quantified the relative plausibility of a QCD and a non-QCD relaxion model versus the Standard Model with Bayesian statistics, which includes an automatic penalty for fine-tuning. We included experimental constraints upon the weak-scale, $\theta_\mathrm{QCD}$ and inflationary observables measured by Planck/BICEP. Whilst we confirmed that relaxion models could solve the hierarchy problem, we found that their unconventional cosmology demolishes their plausibility.

Date
Event
Location
Sydney University
##### Andrew Fowlie
###### Junior Faculty

My research interests include particle physics and statistics.


text:
## Allgemeine Beschreibung

Recurrent Neural Networks (RNNs) have recently shown impressive results in natural language processing, e.g. for speech recognition and machine translation. Additionally, RNNs have also been successfully integrated into computer vision, for example for automatically generating text descriptions for images. In this exercise, you will be introduced to this extremely powerful machine learning method and will gather hands-on experience by tackling a Shakespeare language modeling and an image captioning task.

## Versuchsaufbau

In this exercise we will look at sequence modeling using recurrent neural networks (RNNs). To get a deeper understanding of the backpropagation through time algorithm, you will first implement a simple version without TensorFlow. You will then analyze typical problems when training RNNs and investigate different methods to address them. Afterwards, we will consider the basic RNN architecture in TensorFlow and then an extension to Long Short-Term Memory (LSTM). We will apply these models first to simple toy temporal predictions tasks like extrapolating a sine curve or memorizing the input. Afterwards, we will look at language modeling, i.e. predicting the next word in a sentence, using RNNs. Finally, we will train a model to automatically generate a caption based on an input image.

For this exercise, we will again use TensorFlow (for instructions on how to set it up, please have a look at Versuch 6). But before that, we will build a simple RNNs directly using numpy to better understand the backpropagation through time algorithm.

In this exercise, you will learn to

• Implement a Recurrent Neural Network (RNN)
• Implement a Long Short Term Memory (LSTM) network
• Apply both networks to a temporal prediction task
• Test out the memory capacity of both networks
• Improve network performance by
• Using LSTMs to counter the vanishing gradient problem.
• Use RNNs for a simple language modeling task
• Apply RNNs to a image captioning task

For the first part of the exercise, where you will implement a basic RNN directly with numpy, we will work with randomly generated sequences which are input to the network and the network needs to remember this random input. The file $$\textit{q1_bptt/data_generator.py}$$ already  implements the data generation.

The second part of the exercise will be based on TensorFlow. Here, we will work with different datasets. The first is a memory task based on randomly generated data similar to before. Handling of this dataset is already implemented in the function  $$\textit{generate_batch_memory_task}$$ of $$\textit{q2_rnn/data_generator.py}$$. Additionally, we will generate sine curves of random frequency and phase shift which is implemented in the same file in the function $$\textit{generate_sin_data}$$. The next dataset will be based on texts of Shakespeare and the function $$\textit{generate_shakespeare_data}$$ is provided to read in that data. The text file shakespeare.txt is directly supplied as download along with the code.

#### Recurrent Neural Networks

Recurrent Neural Networks (RNNs) are an extension of feed-forward networks (MLPs) which are designed to work on input sequences rather than just a single vector input. RNNs add recurrent connections through which the hidden state is used as an additional input for the next timestep. The weights of an RNN are shared over time and the RNN can be applied to input sequences of arbitrary length. The figure under the formula shows a simple RNN unfolded over time. Note that the recurrent weight matrix $$W_{hh}$$ is shared over time. The hidden activation $$h_{t}$$ at time $$t$$ can be calculated as

$$h_{t}=f\left(W_{hh}h_{t-1}+W_{xh}x_{t}+b_{h}\right).$$

In order to calculate the activations for all time steps, we first initialize the initial hidden state $$h_{0}$$, which can either be learned or as in the figure just set to $$0$$. Afterwards, the above equation is used for every time step.

Usually on top of such a recurrent layer, either more recurrent layers or in the end a final linear output layer are stacked.

#### Backpropagation Through Time (BPTT)

In order to calculate the gradient of the loss function with respect to the weights for RNNs, the backpropagation algorithm is extended to backpropagation through time (BPTT). Again, in practice TensorFlow will take care of all derivatives, hence we will only briefly illustrate the basic idea. Consider the hidden layer $$h$$ shown in the figure in RNN and assume we have a loss function $$E$$ which is composed of individual losses from each time step, i.e. $$E=\sum_{t=1}^{T}E_{t}.$$ Starting with the output layer, we can then derive gradients $$\frac{\partial E_{t}}{\partial h_{t}}$$ for each time step as shown in the figure. Now we are interested in the gradients with respect to the layer below. When evaluating an RNN, we use the equation $$h_{t}$$ forward in time. During BPTT, we have to go backwards through time to propagate the gradients. Here we will consider the example in the figure with 3 time steps. Since $$h_{1}$$ and $$h_{2}$$ are earlier in time than $$h_{3}$$, their gradients do not have an influence on the gradient for $$h_{3}$$. Hence, we can start by

$$\frac{\partial E}{\partial h_{3}}=\frac{\partial E_{3}}{\partial h_{3}}.$$

For $$h_{2}$$, we have a gradient both from the above layer and coming backwards in time from $$h_{3}$$, i.e.

$$\frac{\partial E}{\partial h_{2}}=\frac{\partial E_{2}}{\partial h_{2}}+\frac{\partial E_{3}}{\partial h_{2}}=\frac{\partial E_{2}}{\partial h_{2}}+W_{hh}^{T}\left(\frac{\partial E_{3}}{\partial h_{3}}\odot f'(h_{3})\right).$$

Finally, for $$h_{1}$$ ,we again have a gradient coming from the above layer and a gradient coming backwards in time, for which we reuse

the gradient with respect to $$h_{2}$$, i.e.

$$\frac{\partial E}{\partial h_{1}}=\frac{\partial E_{1}}{\partial h_{1}}+\frac{\partial E_{2}}{\partial h_{2}}+\frac{\partial E_{3}}{\partial h_{3}}=\frac{\partial E_{1}}{\partial h_{1}}+\frac{\partial E}{\partial h_{2}}\frac{\partial h_{2}}{\partial h_{1}}=\frac{\partial E_{1}}{\partial h_{1}}+W_{hh}^{T}\left(\frac{\partial E}{\partial h_{2}}\odot f'(h_{2})\right).$$

As you’ve just seen, in every step of backpropagation through time, we multiply with the transpose of the recurrent weight matrix $$W_{hh}$$. When we do this for many time steps, we effectively take this matrix to a high power. Based on an analysis of the eigenvalues of $$W_{hh}$$, we can derive, that the gradients will either explode or vanish exponentially over time which is a problem in practice. One way to combat exploding gradients is gradient clipping which is described in the exercise sheet. Vanishing gradients can for example be addressed by a more complicated RNN architecture which will be described in the following.

#### Long Short-Term Memory (LSTM)

The Long Short-Term Memory (LSTM) architecture extends a basic RNN by introducing a hidden cell state (in addition to the hidden state) and multiple multiplicative gates. The internal cell state is updated at each time step by using an input gate and a forget gate which decide how much influence the input and the previous hidden cell state should have on the current state. Furthermore, the output of the LSTM cell is gated by the output gate. The LSTM architecture enables the network to work much better with long sequences and is less strongly affected by vanishing or exploding gradients.

#### Language Modeling

Language modeling is an important task in natural language processing and has many important applications like speech recognition or machine translation. A language modeling assigns a probability to each possible sequence of words. For a sequence $$x_{1},\dots,x_{N}$$ of $$N$$ words, usually the language model uses the following factorization

$$p(x_{1},\dots,x_{N})=p(x_{1})p(x_{2}|x_{1})\dots p(x_{N}|x_{1},\dots,x_{N-1})=\prod_{n=1}^{N}p(x_{n}|x_{1},\dots,x_{n-1}).$$

This means that language models usually just need to learn a one-word-ahead prediction.

In practice, language models need to deal with large vocabularies of possible words which makes it difficult to apply standard neural networks. Often, an embedding is learned which maps the one-hot encoded input word (i.e. a vector of length of the whole vocabulary, which has a $$1$$ at the right word and a $$0$$ for all other words) to a dense embedding vector which represents the word. Instead of multiplying a big weight matrix with the sparse one-hot input, we can just look up the corresponding column of the weight matrix without having to perform the multiplication.

#### Implementing Backpropagation Through Time

As the first task, you will implement the backpropagation through time algorithm for a simple recurrent neural network directly with numpy, i.e. without TensorFlow. To this end, you will implement first the $$\textit{BasicRNNCell.fprop}$$ function which computes the forward pass and  afterwards the $$\textit{BasicRNNCell.bprop}$$ function which computes the backward pass. To make things easier, the exercise sheet lists the precise equations you’ll need to implement. You will then test the correctness of your implementation with the $$\textit{run_check_grads}$$ function which will compare your gradient computation to numeric differentiation.

Now we’ll create a visualization of how the gradients develop over time to get an understanding for exploding gradients. Afterwards, we’ll fix the exploding gradients by implementing gradient clipping.

#### LSTM in TensorFlow

To make things easier, we switch back to TensorFlow and you’ll now

implement the more complex LSTM architecture including the cell state

and it’s gates.


text:
# Perfect Squares and Natural Numbers

I just posted the following message in my Module Discussion Forum for my First-Year module G11FPM Foundations of Pure Mathematics.

Hi everyone,

In the first lecture, the question arose as to whether or not 0 is a “perfect square”. In fact, it turns out that mathematicians don’t all agree on the answer to this.

Part of the problem is the question of whether or not 0 is a natural number. In fact there is probably a 50-50 split in the literature on this issue. However, in Nottingham I believe that 0 is usually NOT included in the set of natural numbers. But you may need to confirm this with your lecturers on a module-by-module basis.

In G11FPM the natural numbers will start from 1, and so (for us) 0 is not the square of a natural number. However, 0 is the square of an integer, and this leads on to the other reason mathematicians disagree. Are “perfect squares” the squares of natural numbers or the squares of integers? Wikipedia, at least, appears to go along with my “squares of integers” approach. [See http://en.wikipedia.org/wiki/Square_number] but this is far from decisive evidence!

This will not be an issue in the module G11FPM: from now on, if the term “perfect square” (or equivalent) arises, I will always clarify what I mean at the time. However, it does give yet another illustration of the fact that your answers to questions depend  crucially on the definitions you are using. Since most terms in this module will have official and unambiguous definitions, you will need to know and understand the official definitions in order to obtain the correct answers in this module.

Best wishes,

Dr Feinstein

“All positive integers not of the form $4^n(8m+7)$ for some $m,n\geq 0$ can be written as the sum of three squares.” It’s rather necessary.


text:
# Finding $L^2$ norm of solution of ODE

I have a linear differential equation with real constant coefficients $$\sum\limits_{i=0}^3 a_i y^{(i)}(x)=0$$ with initial conditions $y^{(i)}(0)=y_i\in\mathbb{R}$ where $i=0,1,2$. I need to find $L^2(\mathbb{R}_+)$ norm of $y(x)$ assuming that $\lim\limits_{x\to+\infty}y(x)=0$.

How can I solve it? The chracteristic equation is of the third order with arbitrary coefficients!

-
Any suggestions? –  user34574 Jun 27 '12 at 17:15
Now, is it clear? –  user34574 Jun 27 '12 at 22:11

For all $k,l\in\{0,1,2,3\}$ we denote $$I_{k,l}=\int\limits_{\mathbb{R}_+}y^{(k)}(x)y^{(l)}(x)d\mu(x)$$ Since $y(+\infty)=0$, and we are solving linear differetial equation with constant coefficients then $y^{(k)}(+\infty)=0$ for $k\in\{0,1,2,3\}$.

Note the following simple idenities $$I_{k,l}=-y_{k-1}y_{l}-I_{k-1,l+1}\quad\text{ for }\quad k\geq 1\\$$ $$I_{k+1,k}=-0.5 y_k^2\quad\text{ for }\quad k\geq 0\\$$ $$I_{k,l}=I_{l,k}\quad\text{ for }\quad k,l\geq 0\\$$ They allow us to write down $I$ matrix $$I= \begin{Vmatrix} I_{0,0} & -0.5 y_0^2 & -y_1y_0-I_{1,1} & -y_2y_0+0.5 y_1^2\\ -0.5 y_0^2 & I_{1,1} & -0.5 y_1^2 & -y_2 y_1-I_{2,2} \\ -y_1y_0-I_{1,1} & -0.5 y_1^2 & I_{2,2} & -0.5 y_2^2 \\ -y_2y_0+0.5 y_1^2 & -y_2 y_1-I_{2,2} & -0.5 y_2^2 & I_{3,3} \end{Vmatrix}$$ Now multiply our differential equation by $y^{(k)}(x)$ with $k\in\{0,1,2\}$, and integrate over $\mathbb{R}_+$. Then we get $$\sum\limits_{l=0}^3 a_l I_{k,l}=0\quad\text{where}\quad k\in\{0,1,2\}$$ This is a system of linear equations with unknowns $I_{0,0}$, $I_{1,1}$, $I_{2,2}$. Its solution is very difficult to get by hand but possible $$I_{0,0}= -\frac{-a_1 y_0^2-2 a_2 y_1 y_0-2 a_3 y_2 y_0+a_3 y_1^2}{2 a_0}-\frac{a_2 \left(-a_0 a_2 y_0^2-2 a_0 a_3 y_1 y_0-a_2^2 y_1^2-a_1 a_3 y_1^2-a_3^2 y_2^2-2 a_2 a_3 y_1 y_2\right)}{2 a_0 \left(a_1 a_2-a_0 a_3\right)},$$ $$I_{1,1}= -\frac{-a_0 a_2 y_0^2-2 a_0 a_3 y_1 y_0-a_2^2 y_1^2-a_1 a_3 y_1^2-a_3^2 y_2^2-2 a_2 a_3 y_1 y_2}{2 \left(a_1 a_2-a_0 a_3\right)},$$ $$I_{2,2}= -\frac{-a_0^2 y_0^2-2 a_0 a_1 y_1 y_0-a_1^2 y_1^2-a_0 a_2 y_1^2-a_1 a_3 y_2^2-2 a_0 a_3 y_1 y_2}{2 \left(a_1 a_2-a_0 a_3\right)}$$ I must confess, but I used Mathematica to solve this system. Here is the code

i[k_, l_] := -Subscript[y, k - 1] Subscript[y, l] - i[k - 1, l + 1] /;
k > l + 1 && l >= 0
i[k_, l_] := -1/2 Subscript[y, l]^2 /; k == l + 1 && l >= 0
i[k_, l_] := Subscript[i, k, l] /; k == l
i[k_, l_] := i[l, k] /; k < l

n := 3

Solve[
Table[Sum[Subscript[a, l] i[k, l], {l, 0, n}] == 0, {k, 0, n - 1}],
Table[Subscript[i, k, k], {k, 0, n - 1}]]

The answer to your question is $I_{0,0}^{1/2}$.

P.S. This method can be generalized to linear differential equations of arbitrary order.

-

Presumably the $a_j$ are real. Let $p(z) = \sum_{j=0}^3 a_j z^j$. Let $r_j$ be the roots of this polynomial (counted by multiplicity).

If all $r_j$ have real part $\ge 0$, the only solution $y$ with $y \to 0$ at $+\infty$ is $0$.

If two $r_j$ have real part $\ge 0$ and one (say $r_3$) is negative, the only solution with $y(0) = y_0$ and $y \to 0$ at $\infty$ is $y = y_0 e^{r_3 t}$, and the $L^2({\mathbb R}_+)$ norm of this is $\|y_0|/\sqrt{-2 r_3}$.

If a complex conjugate pair of $r_j$ have real part $< 0$ (say $\alpha \pm \beta i$ with $\beta > 0$ and $\alpha < 0$)and the other root is nonnegative, the real solutions with $y \to 0$ at $\infty$ are $e^{\alpha t} \left(y_0 \cos(\beta t) + \dfrac{y_1 - \alpha y_0}{\beta} \sin(\beta t)\right)$, and their $L^2({\mathbb R}_+)$ norms are $$\sqrt{\frac {5\,{{\it y_0}}^{2}{\alpha}^{2}+{{\it y_0}}^{2}{\beta}^{2}-4\,\alpha\,{\it y_0}\,{\it y_1}+{{\it y_1}}^{2}}{ -4\left( {\alpha}^{2}+{ \beta}^{2} \right) \alpha}}$$

Other cases may be more complicated.

EDIT: if all $r_j$ have real part $< 0$, so all solutions go to $0$ as $t \to \infty$, then (with help from Maple) I get $$\|y\|^2 = (-2a_{{1}}{a_{{2}}}^{2}y_{{0}}y_{{1}}-2a_{{3}}y_{{1}}y_{{2}}{a_{{2} }}^{2}+ \left( -a_{{0}}{a_{{2}}}^{2}-{a_{{1}}}^{2}a_{{2}}+a_{{0}}a_{{1 }}a_{{3}} \right) {y_{{0}}}^{2}- \left( {a_{{2}}}^{3}+{a_{{3}}}^{2}a_{ {0}} \right) {y_{{1}}}^{2}-{a_{{3}}}^{2}{y_{{2}}}^{2}a_{{2}}+2\,a_{{3} } \left( -a_{{2}}a_{{1}}+a_{{0}}a_{{3}} \right) y_{{0}}y_{{2}})/ (2 a_{{0}} \left( -a_{{2}}a_{{1}}+a_{{0}}a_{{3}} \right) )$$

EDIT: This was assuming real $y_i$.

The general solution of the differential equation is $y(t) = \sum_{r} c_r e^{rt}$, the sum being over the roots of $p(z)$. The initial conditions are $y(0) = \sum_{r} c_r = y_0$, $y'(0) = \sum_{r} r c_r = y_1$, $y''(0) = \sum_r r^2 c_r = y_2$. Write these three equations as $Y = V C$ where $$V = \pmatrix{1 & 1 & 1\cr r_1 & r_2 & r_3\cr r_1^2 & r_2^2 & r_3^2\cr}$$ If $y_i$ are real, so is $y(t)$, and the square of its $L^2$ norm is $$\int_0^\infty y(t)^2\ dt = \sum_r \sum_s c_r c_s \int_0^\infty e^{(r+s)t}\ dt = \sum_r \sum_s \dfrac{-c_r c_s}{r+s} = - C^T M C$$ where $$M = \pmatrix{\dfrac{1}{2r_1} & \dfrac{1}{r_1+r_2} & \dfrac{1}{r_1+r_3}\cr \dfrac{1}{r_2+r_1} & \dfrac{1}{2r_2} & \dfrac{1}{r_2+r_3}\cr \dfrac{1}{r_3+r_1} & \dfrac{1}{r_3+r_2} & \dfrac{1}{2r_3}\cr}$$ Now $-C^T M C = -Y^T (V^{-1})^T M V^{-1} Y$, so what we need to do is express each entry of $(V^{-1})^T M V^{-1}$ in terms of the coefficients $a_j$. These entries are symmetric rational functions in $r_1$, $r_2$, $r_3$, so that should be possible: every symmetric polynomial in $k$ variables can be expressed as a polynomial in the elementary symmetric polynomials. But doing it by hand looks rather daunting.

-
I was given a hint: $\Vert y\Vert_{L^(\mathbb{R}_+)}^2$ is a rational function of $a_i$ and $y_i$. –  user34574 Jun 28 '12 at 12:04
Since $\lim\limits_{x\to+\infty} y(x)=0$ can we conclude that $\text{Re}(r_j)<0$ for all $j$? How to get the last formula without Maple? –  user34574 Jun 29 '12 at 12:05
If all solutions have $\lim_{x \to \infty} y(x)=0$ we can conclude that all $\text{Re}(r_j) < 0$. –  Robert Israel Jun 29 '12 at 17:54
your expression for $y$ in last edit is incorrect if roots have multiplicity –  user34574 Jun 29 '12 at 20:40
The final answer should be OK if there are multiple roots, as it can be considered as a limit of the non-degenerate case. –  Robert Israel Jun 29 '12 at 21:22
show 1 more comment


text:
# Techniques to bound products of upper triangular matrices and their inverses

Let $A_0, \dots, A_{n-1}$ be upper triangular matrices with ones on the diagonal. Let $B_{n-1}, \dots, B_0$ be of the same form.
I am interested in bounding $$|| A_0 \dots A_{n-1} B_{n-1}^{-1} \dots B_0^{-1}||$$ and in particular showing that this product is close to the identity when $A_i$ and $B_i$ are close (specifically, $||A_i - B_i|| \leq \delta \lambda^{- \min(i, n-i)}$ where $\lambda>1$).

In general, this will probably not be possible, but there may be conditions when there are interesting bounds.

The problem is, I don't really know anything about techniques for bounding products of matrices. There is the obvious multiplicativity of the matrix (i.e., operator) norm, but it is far from best possible in this case. For instance, it is easy to check that the norm can grow at most polynomially in $n$ if the norms of the $A_i, B_i$ are bounded above by some constant.

Hence:

Question: What techniques/tricks are there for bounding these kinds of products of matrices?

Unfortunately I don't know exactly which techniques would be useful, so I'd appreciate any pointers to relevant papers or books.

I can at least explain how the problem is motivated. Namely, we have a Holder-continuous matrix-valued function $A: X \to GL_m(\mathbb{R})$ for $X$ a compact metric space.
Then the $A_i$ will be the values $A(T^ix)$ and the $B_i$ will be $A(T^ip)$ for $p$ close to $x$. The multiplicative ergodic theorem states that the norm products $||A_0 \dots A_{n-1}||$ grow like $e^{\lambda n}$ almost everywhere (in $x$) with respect to any invariant measure (where $\lambda$ is the maximal Lyapunov exponent), but in the case of upper triangular matrices, this is actually immediate---we even have polynomial growth if ones are on the diagonal (a corollary of the nilpotence of strictly upper triangular matrices). The multiplicative ergodic theorem and its variants were used in a paper that motivated the problem I'm working on, but it doesn't quite seem to help here (because we make slightly different assumptions), which is why I was curious about other techniques.

-

The standard trick to quantify the joint continuity of a product operation such as $(A_1,\ldots,A_k) \to A_1 \ldots A_k$ (which is essentially what you are trying to do here) is to split a difference such as

$$A_1 \ldots A_k - B_1 \ldots B_k$$

as the telescoping sum of $k$ expressions of the form

$$A_1 \ldots A_{i-1} (A_i - B_i) B_{i+1} \ldots B_k$$

and then estimate each term of the latter separately by various standard inequalities, e.g.

$$\|AB\|_{op} \leq \|A\|_{op} \|B\|_{op}.$$

This will give some bound on the norm of the difference of the product in terms of the norms of the individual differences $A_i - B_i$.

A similar device will also control $A_1 \ldots A_{n-1} B_{n-1}^{-1} \ldots B_1^{-1} - I$.

-
I fixed your math display involving norms: since you had underscores in it, the MarkDown/jsmath combination chokes on it, and wrapping it with backticks ` usually does the trick. –  Mariano Suárez-Alvarez Jul 16 '10 at 22:15
Thanks! This is useful. –  Akhil Mathew Jul 16 '10 at 23:34

A variant of the previous answer which uses the particular form of the matrices.

I shall just take four matrices $A_{1}, A_{2}, B_{2}, B_{1}$, upper triangular with 1's on the diagonal, because the general case reduces to this one.

Consider the group of $n \times n$ real upper triangular matrices with 1's on the diagonal. That is a Carnot group! Identify it with its Lie algebra because the exponential is bijective. Let $Q= \sum_{i=1}^{n-1} (n-i) i$, that is called the homogeneous dimension.

Then you have two norms on this group: the first one is a Carnot-Caratheodory norm, call it '$\| A\|_{CC}$' , the other one is just an euclidean norm, call it $\|A \|$ . These norms have the properties:

1. $\| AB \|_{CC} \leq \| A \|_{CC} + \|B\|_{CC}$,

2. $\|A\|_{CC}$ grows like (is comparable with) $\|A \|^{1/Q}$.

Now, suppose we want to estimate $\|A_{1} A_{2} B_{2}^{-1} B_{1}^{-1}\|_{CC}$, then we do like this:

$\|A_{1} A_{2} B_{2}^{-1} B_{1}^{-1}\|_{CC} = \|A_{1} A_{2} B_{2}^{-1} A_{1}^{-1} A_{1}B_{1}^{-1}\|_{CC} \leq \|A_{1} A_{2} B_{2}^{-1} A_{1}^{-1} \|_{CC} + \|A_{1}B_{1}^{-1}\|_{CC}$

You only need to estimate now the first term from the right. Remember that because the group is nilpotent the Baker-Campbell-Hausdorff formula (i e the multiplication law when you identify the Lie algebra with the Lie group) is polynomial. Then you get, by simply taking the Euclidean norm of the multiplication, that

$\|A_{1} A_{2} B_{2}^{-1} A_{1}^{-1} A_{1}B_{1}^{-1}\| \leq \mathcal{O}(\|A_{1}\|) \|B_{2}^{-1} A_{1}^{-1}\|_{CC}^{Q}$

And that is it, you may iterate the procedure if you have more matrices!

-


text:
Home Forums HCL Reviews Tutorials Articles Register Search Today's Posts Mark Forums Read
 LinuxQuestions.org Installing Mesa on Linux ?
 Linux - Software This forum is for Software issues. Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.

Notices

 01-21-2003, 10:54 PM #1 TheGr81 Member   Registered: Jan 2003 Posts: 38 Rep: Help with Computer Graphics class please!! Hey guys, This is my first time posting on this forum and I am kinda desperate. I am taking a computer graphics class in college and we are using OpenGL. We are supposed to install Mesa in Linux if we want to work on our project at home which is what I am doing. Here is what I have accomplished so far *I downloaded Mesalib-5.0.tar.gz and Mesademos-5.0.tar.gz from the Mesa website and extracted everything into a single directory. *I ran make linux-86 to compile the libraries *I copied over some of the libarary files to my lib directory as stated in the readme.x11 file in the docs directory that came with Mesa Now I am trying to run a sample program that we were given and I am having no luck. When I type make, the program compiles fine, but when I try to run it a window pops up that says cannot find the program teatex_withmenu which is the name of the program I am trying to run. My make file is as follows... INCLUDE_DIR = -I/usr/include/X11 -I/Marc/classwork/ceg477/Mesa-5.0 -I./ -I/usr/X11R6/include LIBRARY_DIR = -L/usr/lib -L/Marc/classwork/ceg477/Mesa-5.0 -L/usr/X11R6/lib LIBRARIES = -lglut -lGLw -lGLU -lGL -lX11 -lXext -lXm -lXt -lXmu -lm COMPILER_FLAGS = -O -w COMPILER = g++ OBJ_FILES = teatex_withMenu.o EXEC = teatex_withMenu $(EXEC):$(OBJ_FILES) $(COMPILER)$(COMPILER_FLAGS) -o $(EXEC)$(OBJ_FILES) \ $(LIBRARY_DIR)$(LIBRARIES) teatex_withMenu.o : teatex_withMenu.c $(COMPILER)$(COMPILER_FLAGS) $(INCLUDE_DIR) -c teatex_withMenu.c clean: \rm -f *.o *~ core I was getting errors about bad symbols before I aded a couple more paths to the lib and include constants. Does anyone have any suggestions for me?? We have to fool with a bunch of sample programs and make some small changes to them before thursday and I can't even get them to run I would greatly appreciate any help. Marc  01-22-2003, 05:50 PM #2 Bert Senior Member Registered: Jul 2001 Location: 406292E 290755N Distribution: GNU/Linux Slackware 8.1, Redhat 8.0, LFS 4.0 Posts: 1,004 Rep: What distribution are you using? Can't you just install binary packages (RPM, debs)? What does the INSTALL file included with the paqckage say? Don't you have to 'make' and then 'make install' rather than manually installing things? Shooting some suggestions from the hip, as you've not much time.  01-22-2003, 06:07 PM #3 trickykid Guru Registered: Jan 2001 Posts: 24,133 Rep: moved: more suitable in the software forum.  01-22-2003, 07:06 PM #4 TheGr81 Member Registered: Jan 2003 Posts: 38 Original Poster Rep: I am using RedHat 8.0. I assume I could use binary files if I knew where to get them. All I found on the Mesa website was the archives. Any more suggestions?  01-22-2003, 07:59 PM #5 iceman47 Senior Member Registered: Oct 2002 Location: Belgium Distribution: Debian, Free/OpenBSD Posts: 1,123 Rep: http://www.rpmfind.net/linux/rpm2htm...mit=Search+... here you go  01-22-2003, 08:26 PM #6 TheGr81 Member Registered: Jan 2003 Posts: 38 Original Poster Rep: but will the rpm for Redhat 7.2 work? I don't see anything for 8.0  01-22-2003, 08:28 PM #7 TheGr81 Member Registered: Jan 2003 Posts: 38 Original Poster Rep: Also, that is a very old version of Mesa. The newest is 5.0, that only finds version 3.  01-22-2003, 10:07 PM #8 TheGr81 Member Registered: Jan 2003 Posts: 38 Original Poster Rep: OK... I completely started the installation over and used the "new-style" method of installing as stated in the INSTALL file. I ran ./configure then make, then make install. I also installed the oss-opengl-glu libraries using an rpm. Now, when I try to compile the sample program that was given to us by our teacher, I get an error as follows... [root@rs236129 sample]# make gcc -O -w -o teatex_withMenu teatex_withMenu.o \ -L/usr/lib -L. -lglut -lGLw -lGLU -lGL -lX11 -lXext -lXm -lXt -lXmu -lm ./libglut.a: could not read symbols: Bad value collect2: ld returned 1 exit status make: *** [teatex_withMenu] Error 1 The make file I am using now is as follows.... INCLUDE_DIR = -I/usr/include/X11 -I. LIBRARY_DIR = -L/usr/lib -L. LIBRARIES = -lglut -lGLw -lGLU -lGL -lX11 -lXext -lXm -lXt -lXmu -lm COMPILER_FLAGS = -O -w COMPILER = gcc OBJ_FILES = teatex_withMenu.o EXEC = teatex_withMenu$(EXEC): $(OBJ_FILES)$(COMPILER) $(COMPILER_FLAGS) -o$(EXEC) $(OBJ_FILES) \$(LIBRARY_DIR) $(LIBRARIES) teatex_withMenu.o : teatex_withMenu.c$(COMPILER) $(COMPILER_FLAGS)$(INCLUDE_DIR) -c teatex_withMenu.c clean: \rm -f *.o *~ core We were given the libglut.a file which is producing the error with the sample program. Maybe I should try getting rid of it? Any other ideas?
 01-22-2003, 10:24 PM #9 TheGr81 Member   Registered: Jan 2003 Posts: 38 Original Poster Rep: I deleted the libglut.a file that was given to us with the sample program and that fixed the error I was getting but I got another one saying that -lx11 could not be found so I added another path to the include and library strings which fixed that error. Now I am back to the same thing I was getting before. Everything compiles fine when I type make but when I double-click the executable in my file browser a window pops up titled "konqueror - sorry" and it says "Couldn't find the program teatex_Withmenu" and then it has an OK button. teatex_Withmenu is the same name as the executable file. What in god's name is going on here???? Anyone help please!!!!
 01-23-2003, 03:03 AM #10 Bert Senior Member   Registered: Jul 2001 Location: 406292E 290755N Distribution: GNU/Linux Slackware 8.1, Redhat 8.0, LFS 4.0 Posts: 1,004 Rep: Please use a binary. Donload the RPM files from RPMFind and install that. rpm -i Mesa-3.4.1-1.386.rpm If you have problems compiling a large package like Mesa then it's probably a version problem which will have you running in circles until Thursady next year. Your priority is to use Mesa, not tweak it, right?
 01-23-2003, 01:23 PM #11 TheGr81 Member   Registered: Jan 2003 Posts: 38 Original Poster Rep: Yup, I want to use MESA but that rpm is of a very old version
 01-23-2003, 01:58 PM #12 Bert Senior Member   Registered: Jul 2001 Location: 406292E 290755N Distribution: GNU/Linux Slackware 8.1, Redhat 8.0, LFS 4.0 Posts: 1,004 Rep: How about version 4.01 ?


text:
# How to empty IEnumerable list? [closed]

I need to empty IEnumerable list i tried many things like null and none of them worked

this how my model looks like

public class NewsViewModel
{
public NewsViewModel()
{
this.Categories = new List<Category>();
}

public int NewsId { get; set; }
public string NewsTitle { get; set; }
public string NewsBody { get; set; }

public IEnumerable<Category> Categories { get; set; }
}

if (!string.IsNullOrEmpty(SelectedCategoriesIds))
{
List<Category> stringList = new List<Category>();
stringList.AddRange(SelectedCategoriesIds.Split(',').Select(i => new Category() { CategoryId = int.Parse(i) }));
model.Categories = stringList.AsEnumerable();
}
else
{
model.Categories = null;
}

How to make model.Categories empty ?

## closed as unclear what you're asking by Servy, e4c5, Ilja Everilä, Drew, JALAug 1 '16 at 16:31

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

• i tried many things like null and none of them worked ... How? – Rahul Jul 20 '16 at 21:17
• When you expose only the IEnumerable<T> interface, you are intending that the downstream use for this interface will be to hand out something that should be enumerated. The IEnumerable<T> contract does not include any members that relate to modifying the underlying collection. Perhaps you should expose ICollection<T> instead? – spender Jul 20 '16 at 21:22
• why do you need to convert List to IEnumerable? Why can't you just declare as List<T> in your class? Is there a specific reason? – techspider Jul 20 '16 at 21:24

# If assigning a new value

You can also use an empty array for this

  if (!string.IsNullOrEmpty(SelectedCategoriesIds))
{
List<Category> stringList = new List<Category>();
SelectedCategoriesIds.Split(',')
.Select(i => new Category() { CategoryId = int.Parse(i) }));
model.Categories = stringList.AsEnumerable();
}
else
{
//set the property to an empty arrary
model.Categories = new Category[]{};
}

This is less efficient than @DavidL's answer but is an alternative way to create an empty enumerable

# If the enumerable is always a list and you want to clear it instead make the property type IList

If you're model always has a list and you want to clear it instead, then change the model and access the method that way.

 public class NewsViewModel
{
public NewsViewModel()
{
this.Categories = new List<Category>();
}
public int NewsId { get; set; }
public string NewsTitle { get; set; }
public string NewsBody { get; set; }

public IList<Category> Categories { get; set; }

}

Then in your if statement you can use clear

else
{
//Now clear is available
model.Categories.Clear();
}

model.Categories = Enumerable.Empty<Category>();

The Empty() method caches an empty sequence of type TResult. When the object it returns is enumerated, it yields no elements.

An enumerable sequence with no elements is different from null. If you return null for IEnumerable<T> and then attempt to enumerate it, you will receive a NullReferenceException.

On the other hand, if you return Enumerable.Empty<T>() and attempt to enumerate it, the code will execute just fine without the need for a null check, since there are no elements to enumerate.

It is worth noting that Enumerable.Empty<T>() is also more efficient than returning new List<T>() since a new list object does not need to be allocated.

You cannot use .Clear() in this instance because your IEnumerable<T> is a projectable sequence that is not materialized until enumerated. There isn't anything to clear yet.

Finally, as spender mentioned below, this will only update this particular reference. If anything else also is holding a reference to your IEnumerable<T>, it would not reflect the change unless you specifically passed in model.Categories via ref.

Alternatively, you can cast to List<Category> and call .Clear(), which would clear the underlying collection, updating all references. However, you will also need to perform an explicit null check when doing so, as mentioned in other answers. Note however, that this is also a very aggressive action. You are not updating only this instance, but all instances which may or may not have side effects. You need to determine which is more appropriate based on intent and needs.

• Replacement isn't clearing. Anything else that had a reference to the old IEnumerable<Category> won't know this has happened. – spender Jul 20 '16 at 21:18
• model.Categories.Clear() will empty out an existing IEnumerable. model.Categories = new IEnumerable<whatever>() will create a new empty one. It may not be a nullable type - that would explain why it can't be set to null. – Dave Smash Jul 20 '16 at 21:20

Just create empty list and asign it.

model.Categories = new List<Category>();

Try it this way:

(model.Categories as List<Category>)?.Clear();

• So, maybe clear the enumerable if it happens to be a list, otherwise do nothing? That doesn't seem like a very clear statement of intent to me. – spender Jul 20 '16 at 21:27
• There is no guarantee that model.Categories is a list, and if it isn't this just silently fails – konkked Jul 20 '16 at 21:27
• So if you want to clear a collection the property should not be a IEnumerable<T> but instead a IList<T>. – Udo Jul 20 '16 at 21:31


text:
# Data representation 3: Layout

Last lecture discussed how objects are represented in memory, for a couple important kinds of objects (integers of various sizes, signed and unsigned). This lecture concerns layout: the ways that compilers and operating systems place multiple objects in relationship to one another. The abstract machine defines certain aspects of layout; others are left up to the compiler and runtime and operating system.

## Segments

One aspect of layout is that objects are segregated into different address ranges based on lifetime. These ranges are called segments. The compiler decides on a segment for each object based on its lifetime. The linker then groups all the program’s objects by segment (so, for instance, global variables from different compiler runs are grouped together into a single segment). Finally, when a program runs, the operating system loads the segments into memory. (The stack and heap segments grow on demand.)

Object declaration
(C program text)

(abstract machine)

Segment
(executable location in Linux)

(runtime location in x86-64 Linux)

Constant global

Static

Code (aka Text)

0x400000 (≈1 × 222)

Global

Static

Data

0x600000 (≈1.5 × 222)

Local

Automatic

Stack

0x7fff448d0000 (≈225 × 222)

Anonymous, returned by new

Dynamic

Heap

0x1a00000 (≈8 × 222)

Constant global data and global data have the same lifetime, but are stored in different segments. The operating system uses different segments so it can prevent the program from modifying constants. It marks the code segment, which contains functions (instructions) and constant global data, as read-only, and any attempt to modify code-segment memory causes a crash (a “Segmentation violation”).

An executable is normally at least as big as the static-lifetime data (the code and data segments together). Since all that data must be in memory for the entire lifetime of the program, it’s written to disk and then loaded by the OS before the program starts running. There is an exception, however: the “bss” segment is used to hold modifiable static-lifetime data with initial value zero. Such data is common, since all static-lifetime data is initialized to zero unless otherwise specified in the program text. Rather than storing a bunch of zeros in the object files and executable, the compiler and linker simply track the location and size of all zero-initialized global data. The operating system sets this memory to zero during the program load process. Clearing memory is faster than loading data from disk, so this optimization saves both time (the program loads faster) and space (the executable is smaller).

## Compiler layout

The compiler has complete freedom to pick locations for objects, subject to the abstract machine’s constraints—most importantly, that each object occupies disjoint memory from any other object that’s active at the same time. For instance, consider this program:

void f() {
int i1 = 0;
int i2 = 1;
int i3 = 2;
char c1 = 3;
char c2 = 4;
char c3 = 5;
...
}

On Linux, GCC will put all these variables into the stack segment, which we can see using hexdump. But it can put them in the stack segment in any order, as we can see by reordering the declarations (try declaration order i1, c1, i2, c2, c3), by changing optimization levels, or by adding different scopes (braces). The abstract machine gives the programmer no guarantees about how object addresses relate. In fact, the compiler may move objects around during execution, as long as it ensures that the program behaves according to the abstract machine. Modern optimizing compilers often do this, particularly for automatic objects.

But what order does the compiler choose? With optimization disabled, the compiler appears to lay out objects in decreasing order by declaration, so the first declared variable in the function has the highest address. With optimization enabled, the compiler follows roughly the same guideline, but it also rearranges objects by type—for instance, it tends to group chars together—and it can reuse space if different variables in the same function have disjoint lifetimes. The optimizing compiler tends to use less space for the same set of variables.

## Collections: Abstract machine layout

The C++ programming language offers several collection mechanisms for grouping subobjects together into new kinds of object. The collections are structs, arrays, and unions. (Classes are a kind of struct.) Although the compiler can lay out different objects however it likes relative to one another, the abstract machine defines how subobjects are laid out inside a collection. This is important, because it lets C/C++ programs exchange messages with hardware and even with programs written in other languages. (Messages can be exchanged only when both parties agree on layout. C/C++’s rules let a C program match any known layout.)

The sizes and alignments for user-defined types—arrays, structs, and unions—are derived from a couple simple rules or principles. Here they are. The first rule applies to all types.

1. First-member rule. The address of the first member of a collection equals the address of the collection.

Thus, the address of an array is the same as the address of its first element. The address of a struct is the same as the address of the first member of the struct.

The next three rules depend on the class of collection. Every C abstract machine enforces these rules.

2. Struct rule. The second and subsequent members of a struct are laid out in order, with no overlap, subject to alignment constraints.

3. Array rule. The address of the ith element of an array of type T is ADDRESSOF(array) + i * sizeof(T).

4. Union rule. All members of a union share the address of the union.

In C, every struct follows the struct rule, but in C++, only simple structs follow the rule. Complicated structs, such as structs with some public and some private members, or structs with virtual functions, can be laid out however the compiler chooses. The typical situation is that C++ compilers for a machine architecture (e.g., “Linux x86-64”) will all agree on a layout procedure for complicated structs. This allows code compiled by different compilers to interoperate.

## Alignment

Repeated executions of programs like ./mexplore show that the C compiler and library restricts the addresses at which some kinds of data appear. In particular, the address of every int value is always a multiple of 4, whether it’s located on the stack (automatic lifetime), the data segment (static lifetime), or the heap (dynamic lifetime).

A bunch of observations will show you these rules:

Type Size Address restriction
char (signed char, unsigned char) 1 No restriction
short (unsigned short) 2 Multiple of 2
int (unsigned int) 4 Multiple of 4
long (unsigned long) 8 Multiple of 8
float 4 Multiple of 4
double 8 Multiple of 8
T* 8 Multiple of 8

These are the alignment restrictions for an x86-64 Linux machine.

These restrictions hold for most x86-64 operating systems, except that on Windows, the long type has size and alignment 4. (The long long type has size and alignment 8 on all x86-64 operating systems.)

Just like every type has a size, every type has an alignment. The alignment of a type T is a number a≥1 such that the address of every object of type T must be a multiple of a. Every object with type T has size sizeof(T)—it occupies sizeof(T) contiguous bytes of memory; and has alignment alignof(T)—the address of its first byte is a multiple of alignof(T). You can also say sizeof(x) and alignof(x) where x is the name of an object or another expression.

Alignment restrictions can make hardware simpler, and therefore faster. For instance, consider cache blocks. CPUs access memory through a transparent hardware cache. Data moves from primary memory, or RAM (which is large—a couple gigabytes on most laptops—and uses cheaper, slower technology) to the cache in units of 64 or 128 bytes. Those units are always aligned: on a machine with 128-byte cache blocks, the bytes with memory addresses [127, 128, 129, 130] live in two different cache blocks (with addresses [0, 127] and [128, 255]). But the 4 bytes with addresses [4n, 4n+1, 4n+2, 4n+3] always live in the same cache block. (This is true for any small power of two: the 8 bytes with addresses [8n,…,8n+7] always live in the same cache block.) In general, it’s often possible to make a system faster by leveraging restrictions—and here, the CPU hardware can load data faster when it can assume that the data lives in exactly one cache line.

The compiler, library, and operating system all work together to enforce alignment restrictions.

On x86-64 Linux, alignof(T) == sizeof(T) for all fundamental types (the types built in to C: integer types, floating point types, and pointers). But this isn’t always true; on x86-32 Linux, double has size 8 but alignment 4.

It’s possible to construct user-defined types of arbitrary size, but the largest alignment required by a machine is fixed for that machine. C++ lets you find the maximum alignment for a machine with alignof(std::max_align_t); on x86-64, this is 16, the alignment of the type long double (and the alignment of some less-commonly-used SIMD “vector” types).

## Alignment rules

Two more rules and we can reason about how collection sizes and alignments interact.

Every C++ abstract machine enforces

5. Malloc rule. Any non-null pointer returned by malloc has alignment appropriate for any type. In other words, assuming the allocated size is adequate, the pointer returned from malloc can safely be cast to T* for any T.

Oddly, this holds even for small allocations. The C++ standard (the abstract machine) requires that malloc(1) return a pointer whose alignment is appropriate for any type, including types that don’t fit.

The last rule is not required by the abstract machine, but it’s how sizes and alignments on our machines work:

6. Minimum rule. The sizes and alignments of user-defined types, and the offsets of struct members, are minimized within the constraints of the other rules.

The minimum rule, and the sizes and alignments of basic types, are defined by the x86-64 Linux “ABI”—its Application Binary Interface. This specification standardizes how x86-64 Linux C compilers should behave, and lets users mix and match compilers without problems.

## Consequences of the size and alignment rules

From these rules we can derive some interesting consequences.

First, the size of every type is a multiple of its alignment.

To see why, consider an array with two elements. By the array rule, these elements have addresses a and a+sizeof(T), where a is the address of the array. Both of these addresses contain a T, so they are both a multiple of alignof(T). That means sizeof(T) is also a multiple of alignof(T).

We can also characterize the sizes and alignments of different collections.

• The size of an array of N elements of type T is N * sizeof(T): the sum of the sizes of its elements. The alignment of the array is alignof(T).
• The size of a union is the maximum of the sizes of its components (because the union can only hold one component at a time). Its alignment is also the maximum of the alignments of its components.
• The size of a struct is at least as big as the sum of the sizes of its components. Its alignment is the maximum of the alignments of its components.

Thus, the alignment of every collection equals the maximum of the alignments of its components.

It’s also true that the alignment equals the least common multiple of the alignments of its components. You might have thought lcm was a better answer, but the max is the same as the lcm for every architecture that matters, because all fundamental alignments are powers of two.

The size of a struct might be larger than the sum of the sizes of its components, because of alignment constraints. Since the compiler must lay out struct components in order, and it must obey the components’ alignment constraints, and it must ensure different components occupy disjoint addresses, it must sometimes introduce extra space in structs. Here’s an example: the struct will have 3 bytes of padding after char c, to ensure that int i2 has the correct alignment.

struct twelve_bytes {
int i1;
char c;
int i2;
};

Thanks to padding, reordering struct components can sometimes reduce the total size of a struct.

The rules also imply that the offset of any struct member—which is the difference between the address of the member and the address of the containing struct—is a multiple of the member’s alignment.

To see why, consider a struct s with member m at offset o. The malloc rule says that any pointer returned from malloc is correctly aligned for s. Every pointer returned from malloc is maximally aligned, equalling 16*x for some integer x. The struct rule says that the address of m, which is 16*x + o, is correctly aligned. That means that 16*x + o = alignof(m)*y for some integer y. Divide both sides by a = alignof(m) and you see that 16*x/a + o/a = y. But 16/a is an integer—the maximum alignment is a multiple of every alignment—so 16*x/a is an integer. We can conclude that o/a must also be an integer!

Finally, we can also derive the necessity for padding at the end of structs. (How?)

## Pointer representation

We distinguish pointers, which are concepts in the C abstract machine, from addresses, which are hardware concepts. A pointer combines an address and a type.

The memory representation of a pointer is the same as the memory representation of its address, so a pointer with address 0x1347810A is stored the same way as the integer with the same value.

The C abstract machine defines an unsigned integer type uintptr_t that can hold any address. (You have to #include <inttypes.h> or <cinttypes> to get the definition.) On most machines, including x86-64, uintptr_t is the same as unsigned long. Casts between pointer types and uintptr_t are information preserving, so this assertion will never fail:

void* ptr = malloc(...);
uintptr_t addr = (uintptr_t) ptr;
void* ptr2 = (void*) addr;
assert(ptr == ptr2);

Since it is a 64-bit architecture, the size of an x86-64 address is 64 bits (8 bytes). That’s also the size of x86-64 pointers.

## Compiler hijinks

In C++, most dynamic memory allocation uses special language operators, new and delete, rather than library functions.

Though this seems more complex than the library-function style, it has advantages. A C compiler cannot tell what malloc and free do (especially when they are redefined to debugging versions, as in the problem set), so a C compiler cannot necessarily optimize calls to malloc and free away. But the C++ compiler may assume that all uses of new and delete follow the rules laid down by the abstract machine. That means that if the compiler can prove that an allocation is unnecessary or unused, it is free to remove that allocation!

For example, we compiled this program in the problem set environment (based on test003.cc):

int main() {
char* ptrs[10];
for (int i = 0; i < 10; ++i) {
ptrs[i] = new char[i + 1];
}
for (int i = 0; i < 5; ++i) {
delete[] ptrs[i];
}
m61_printstatistics();
}

The optimizing C++ compiler removes all calls to new and delete, leaving only the call to m61_printstatistics()! (For instance, try objdump -d testXXX to look at the compiled x86-64 instructions.) This is valid because the compiler is explicitly allowed to eliminate unused allocations, and here, since the ptrs variable is local and doesn’t escape main, all allocations are unused. The C compiler cannot perform this useful transformation. (But the C compiler can do other cool things, such as unroll the loops.)


text:
Change the chapter
Question
(a) Take the slope of the curve in Figure 2.64 to find the jogger's velocity at t = 2.5 s . (b) Repeat at 7.5 s. These values must be consistent with the graph in Figure 2.65.
Question Image
at $t = 2.5 \textrm{ s}$ $v = 3.4 \textrm{ m/s}$
at $t = 7.5 \textrm{ s}$ $v = -3.1 \textrm{ m/s}$
Solution Video